我已将我的应用程序迁移到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();
}
}
答案 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();
}