解决在v4包下的Fragment 里startActivityForResult,onActivityResult返回空数据问题
Posted wjinhhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决在v4包下的Fragment 里startActivityForResult,onActivityResult返回空数据问题相关的知识,希望对你有一定的参考价值。
场景:
MainActivity里有几个Fragment,其中MainActivity继承AppCompatActivity即继承了FragmentActivity,现在在某个Fragment里启动了FirstActivity,并需要在FirstActivity结束后返回数据给该Fragment。
做法:
在Fragment里使用startActivityForResult,然后在FirstActivity调用finish时通过setResult设置返回结果,一段操作后,发现在onActivityResult里获取不到返回值,然后。。。
解决方案:
Intent intent= new Intent(context, XXActivity.class); //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivityForResult(intent, REQUEST_CODE);//切记不要getActivity()
注意:这里一定不要设置Flags,因为使用的是Fragment.this.startActivityForResult,不是getActivity().startActivityForResult,无需设置,关于launchMode,自己百度。如果设置了,这里会因为启动新的任务栈触发onActivityResult()方法执行,导致得到的数据肯定为空。
另外,如果是在MainActivity里获取数据,则使用getActivity().startActivityForResult,同样要设置Flags,切记onActivityResult里的super.onActivityResult(requestCode, resultCode, data);千万不要手贱删掉,不然是拿不到数据。
自己在这里遇到过坑,希望对遇到该问题得朋友有所帮助。
以上是关于解决在v4包下的Fragment 里startActivityForResult,onActivityResult返回空数据问题的主要内容,如果未能解决你的问题,请参考以下文章
ViewPager和Fragment组合 v4包下的页面切换
fragment里层级套的太深没办法执行onactivityresult怎么办
关于v4包的Fragment过渡动画的事件监听无响应问题解决