为什么Android O失败并且“不属于这个FragmentManager!”

时间:2017-10-05 09:10:23

标签: android

我已将我的应用程序迁移到Android Studio 3中的Android O

在Android O模拟器上运行我的所有dialogFragments现在都失败了: -

java.lang.IllegalStateException: Fragment CustomAlertDialogFragment{41cfde98 #0 dialog} declared target fragment LayoutOne{41e7f970 #0 id=0x7f0d0207 android:switcher:2131558919:0} that does not belong to this FragmentManager!

我在以下代码中收到错误: -

 Modules.showDialog(bundledialog, DIALOG_FOUND, this, getChildFragmentManager());

public static void showDialog(Bundle bundle, int type, Fragment fragment, FragmentManager manager)
{
    CustomAlertDialogFragment diag=new CustomAlertDialogFragment();
    diag.setTargetFragment(fragment, type);
    diag.setArguments(bundle);
    try {
        diag.show(manager, "dialog");
    } catch (Exception e) {
        e.printStackTrace();
    }

}

1 个答案:

答案 0 :(得分:1)

当您使用它作为目标显示来自另一个片段的片段时,会发生这种情况。作为解决方法,您可以使用:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        getActivity().getFragmentManager().beginTransaction().add(dialogFrag, "dialog").commit();
} else {
        getChildFragmentManager().beginTransaction().add(dialogFrag, "dialog").commit();
}