2017-10-05 29 views
0

私はすべての私のdialogFragmentsが今で失敗アンドロイドOエミュレータ上で実行しているのAndroid StudioでAndroidのOに3なぜで失敗アンドロイドOである

を自分のアプリケーションを移行している「このFragmentManagerに属していない!」: -

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

を、**使用する(**あなたは**現在のフラグメントを示して喜んでいる意味** getChildFragmentManager()**の助けを借りて、通常のgetFragmentManager()を呼び出します。 ** getFragmentManager()**を使用して** getChildFragmentManager()**を置き換えてみてください。 – NSimon

+0

if(Build.VERSION.SDK_INT> = Build.VERSION_CODES.O){ – Niraj

+0

かどうかを.........を追加する必要があります............... – Niraj

答えて

0

あなたがターゲットとしてそれを使用して別の断片からの断片を示しているとき、それは起こります。回避策としては使用することができます。

** Modules.showDialogを(bundledialog、DIALOG_FOUND、この、getChildFragmentManager())を呼び出す
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
     getActivity().getFragmentManager().beginTransaction().add(dialogFrag, "dialog").commit(); 
} else { 
     getChildFragmentManager().beginTransaction().add(dialogFrag, "dialog").commit(); 
} 
関連する問題