2017-10-05 25 views
0

我已經遷移Android Studio中3爲什麼安卓Ø與失敗「不屬於這個FragmentManager!」

我的應用程序到AndroidØ運行在AndroidØ模擬器我所有的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

呼叫** Modules.showDialog(bundledialog,DIALOG_FOUND,這一點,getChildFragmentManager()); **表示你願意顯示**當前片段**(使用定期getFragmentManager())在** getChildFragmentManager()**的幫助下。嘗試用** getFragmentManager()替換** getChildFragmentManager()** – NSimon

+0

我需要添加如果(Build.VERSION.SDK_INT> = Build.VERSION_CODES.O){ – Niraj

+0

或不......... ............... – Niraj

回答

0

當您顯示來自以它爲目標的另一片段的片段它發生。作爲變通方法,您可以使用:

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