1.单层Fragment的时候,用 startActivityForResult(intent,int i);
而不是getActivity().startActivityForResult(intent,int i);
有可能会出现Fragment中的onActivityResult()接收不到,则应重写Activity的onActivityResult方法,其中获取子Fragment,并调用其方法:
<span style="font-size:18px;"> @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
List<Fragment> fragments = this.getSupportFragmentManager().getFragments();
if (fragments != null) {
for (Fragment fragment : fragments) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}</span>2.当使用嵌套(neste)Fragment的时候,如果想在内层Fragment调用startActivityForResult(),
应该加上getParentFragment(),即
getParentFragment().startActivityForResult().
然后在上层Fragment的onActivityResult()中这样写:
List<Fragment> fragments = getChildFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { fragment.onActivityResult(requestCode, resultCode, data); } }
要注意使用的fragment,上述fragment都在v4包中。
本文介绍在Android应用中如何正确地在不同层级的Fragment之间通过startActivityForResult进行数据传递。包括单层Fragment时避免使用getActivity().startActivityForResult,以及如何在嵌套Fragment中使用getParentFragment().startActivityForResult来确保数据能够被正确接收。

1696

被折叠的 条评论
为什么被折叠?



