0

我试图使用常见的方法,我发现一些搜索结果的片段动态添加到我的ViewPager被破坏,我尝试了两种方式:活动已在FragmentTransaction.commit()

第一个是从作为ViewPager的父活动:

Light_Center fragment = new Light_Center(); // the Fragment Activity 
FragmentManager fm = getSupportFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.add(fragment, "num_" + i); 
ft.commit(); // this is where i got the Exception 

第二个是从所述片段活动本身(Light_Center.Class):

FragmentManager childFragMan = getChildFragmentManager(); 
FragmentTransaction childFragTrans = childFragMan.beginTransaction(); 
Light_Center fragB = new Light_Center(); 
childFragTrans.add(R.id.light_center_fragment, fragB); 
childFragTrans.addToBackStack("B"); 
childFragTrans.commit(); // this is where i got the Exception 

和两种方式给我在commit()线相同的异常:

04-29 12:46:04.099: E/AndroidRuntime(1307): FATAL EXCEPTION: main 
04-29 12:46:04.099: E/AndroidRuntime(1307): java.lang.IllegalStateException: Activity has been destroyed 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at com.automation.isolace.Lighting$11.onClick(Lighting.java:339) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.view.View.performClick(View.java:4084) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.view.View$PerformClick.run(View.java:16966) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.os.Handler.handleCallback(Handler.java:615) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.os.Looper.loop(Looper.java:137) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-29 12:46:04.099: E/AndroidRuntime(1307):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 

我的StackOverflow表示相同的异常,但也没有用,我使用的方式发现了很多问题上

+0

你在哪里创建FragmentTransaction?它看起来在活动完成时正在完成。 – jmcdonnell40

+0

@ jmcdonnell40我创建它作为一个onClick的结果和点击行为发生在另一个活动的片段 –

+0

只是出于好奇,更改commit()commitAllowingStateLoss(),看看是否可行? – jmcdonnell40

回答

0

发生什么事是你开始getChildFragmentManager().beginTransaction(),并且在你能够执行.commit()之前,你的活动或片段正在被破坏。我有一个类似的问题。你将需要检查你的状态,并确保在提交之前还有事。发生此错误时,您的应用中还会发生什么?