onActivityResult 从未在我的嵌套片段中调用

onActivityResult never called in my nested fragment

我有很多嵌套片段。

这就是我开始 activity 结果的方式:

startActivityForResult(Intent.createChooser(intent, "Title"), FILE_PICK);

我没有在其他任何地方覆盖 onActivityResult。我试图在 Activity A 中调用它,它被调用了,但是即使我调用了 super,它也从未出现在 Fragment D 中。还尝试在 MainFragment 中调用 onActivityResult 但它从来没有也在那里被调用。

事件将在 activity 中接收。要在片段 D 中使用它,您必须传播它。

在你的父 activity 上覆盖 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();

为了在 FragmentD 上调用 onActivityResult 覆盖父 activity 中的 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);
        }
    }