嵌套Fragment情况下对二级Fragment onActivityResult()收不到Activity数据的解决方案
2015-05-25 17:36
676 查看
现象:
在做开发的时候遇到这么一个问题:在多级Fragment共同存在使用的过程当中,如果在二级Fragment跳转到一个新的Activity,并且需要Activity传返回数据的时候,一般会在该Fragment使用startActivityForResult()方法。这个时候发现,当跳转的目标Activity有回传数据的时候,该二级Fragment的onActivityResult()方法是拿不到传回的值的。具体的现象见下图。Fragment3的onActivityResult()方法是拿不到Activity的回传值的。
原因:
Android 本身的bug,详情可见:http://www.tuicool.com/articles/2eM32a
解决方案:
当在Fragment 3进行跳转时用getParentFragment().startActivityForResult()方法,这样回传值会传到MainFragment()的onActivityResult()方法当中。同时在Fragment 3中声明对传回数据的set()和get()方法,在MainFragment中调用实例化后的Fragment3.set()方法,同时在Fragment
3中用get()方法去取回数据。如果涉及到页面刷新的动作的话,可以在Fragment 3中的onResume()方法去判断是否等于回传的数据,是的话进行刷新。
主要代码:
</pre><span style="font-size:18px;font-weight: normal;">Fragment 3</span><pre name="code" class="java"><span style="font-size:18px;font-weight: normal;"> Intent intent = new Intent(mContext, mActivity.class);
intent.putExtra("current_index", position);
<span style="color:#ff6666;">getParentFragment()</span>.startActivityForResult(intent, 1);</span>
Activity
<span style="font-size:18px;"> Intent intent = new Intent(); intent.putExtra("data", 2); setResult(resultCode1, intent); <span style="color:#ff6666;">finish();</span></span>
MainFragment
public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == resultCode1) { Log.e("MainFragment", "MainFragment onActivityResult is called:" + data.getExtras().getInt("data")); Fragment 3.setRefreshFlag(data.getExtras() .getInt("data")); } super.onActivityResult(requestCode, resultCode, data); }
Fragment 3
public void onResume() { Log.e("on Resume", "onResume is called"); if (getRefreshFlag() != 0 && getRefreshFlag() == 2) { mAdapter.notifyDataSetChanged(); } super.onResume(); }
相关文章推荐
- Fragment嵌套后,二级fragment onactivityresult失效解决办法
- 多重Fragment嵌套,子Fragment的onActivityResult方法不执行的解决方案
- 嵌套Fragment接收不到OnActivityResult()方法的回调,怎么办?(仔细看红字解决)
- 在onActivityResult中弹出DialogFragment的解决方案 activity和fragment
- 关于Fragment 不响应onActivityResult的情况分析
- 关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案
- 关于Fragment 不响应onActivityResult的情况分析
- 关于Fragment 不响应onActivityResult的情况分析
- 关于Fragment 不响应onActivityResult的情况分析
- fragment跳转fragment使用onActivityResult返回数据,但无法设置到fragment的textView中
- 关于Fragment 不响应onActivityResult的情况分析
- Fragment通过OnActivityResult获取Activity返回数据
- 关于Fragment 不响应onActivityResult的情况分析 (
- fragment嵌套2个fragment的时候onactivityresult分发问题
- 关于Fragment 不响应onActivityResult的情况分析
- ViewPager嵌套Fragment,导致onActivityResult无法调用的问题
- fragment里面嵌套tab(tab里 3ff8 面有多个fragment),onActivityResult不执行解决办法
- Fragment onActivityResult 收不到
- Fragment 嵌套 Fragment onActivityResult 无效的解决方法
- 多Fragment嵌套是如何调用父Fragment的onActivityResult()方法