startactivityforresult 在啥情况下收不到返回值,a

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了startactivityforresult 在啥情况下收不到返回值,a相关的知识,希望对你有一定的参考价值。

参考技术A 最开始必须声明下,大部分情况下都是要有返回值的,特别是你以后工作了写的一些程序。不过,也有少部分情况下是不需要返回值的,那就是你不太关心这个函数的具体运行情况,或者这个函数本身很简单,出错的几率太小了,又或者是初学者在练习的时候。比如部分close()类型的函数通常返回值都为void,比如show()这类的函数通常只是显示内容的,也通常没有返回值。

Fragment的startActivityForResult和Activity的startActivityForResult的区别

2016-08-30 18:22:33

 

前提:我们的APP要兼容Api level 11以前的,所以必须用FragmentActivity

1、对于Fragment的,我们很多时候都会在Activity中通过如下方式使用:

Fragment是Android3.0以后才引入的东西,为了向下兼容,在support v4包中加入了FragmentActivity,FragmentActivity和Activity的区别是:FragmentActivity中只能使用getSupportFragmentManager(),而Activity中可以直接使用getFragmentManager();

 

2、具体看看Fragment中调用startActivityForResult()和mActivity.startActivityForResult()的区别(mActivity是一个FragmentActivity对象):

代码来自support-v4:23.2.1,因为不同的support包中,该方法的实现不太一样,这里的源码分析以23.2.1为准。

1处的代码,要求我们传入的requestCode必须小于2^16;

2处调用了另外一个方法,注意看3处的代码,此处将调用startActivityForResult方法的fragment缓存起来,对应的key就是requestIndex,mPendingFragmentActivityResults是一个SparseArrayCompat<String>对象。

 

3、onActivityResult方法

看代码可以发现,取出缓存中的Fragment,然后调用该Fragment的onActivityResult()方法。注意看这个方法的注释,分发收到的result给对应的Fragment。

 

以上是关于startactivityforresult 在啥情况下收不到返回值,a的主要内容,如果未能解决你的问题,请参考以下文章

秋的潇洒在啥?在啥在啥?

startActivityForResult(...) 立即返回 0

Fragment的startActivityForResult和Activity的startActivityForResult的区别

如何在 onActivityResult 中调用 startActivityForResult?

startActivityForResult和setResult详解

Android------startActivityForResult