我有很多嵌套片段。
这是我开始结果活动的方式:
startActivityForResult(Intent.createChooser(intent, "Title"), FILE_PICK);
我没有onActivityResult
覆盖其他任何地方。我试图在活动A中调用它并且它被调用,但是即使我打电话给超级,它也从未到达片段D.还尝试在onActivityResult
中调用MainFragment
并且它永远不会被调用
答案 0 :(得分:11)
该活动将在活动中收到。要在Fragment D中使用它,你必须传播它。
在您的父活动覆盖onActivityResult
上,然后开始调用您的片段的onActivityResult
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
List<Fragment> fragments = fragmentManager.getFragments();
if(fragments != null){
for(Fragment fragment : fragments){
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}
在您的父片段中,您必须执行相同的操作,但请记住使用getChildFragmentManager
来获取片段的片段管理器
List <Fragment> fragments = getChildFragmentManager().getFragments();
答案 1 :(得分:4)
在FragmentD上调用onActivityResult覆盖父活动中的onActivityResult,如:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragmentD = getSupportFragmentManager().findFragmentByTag("FRAGMENT_D_TAG");
if (fragmentD != null) {
fragmentD.onActivityResult(requestCode, resultCode, data);
}
}