내가 동적으로 좀 검색의 결과로 볼 수있는 일반적인 방법을 사용하여 내 ViewPager
에 조각을 추가하기 위해 노력하고있어 파괴되어, 나는 두 가지 방법을 시도활동이 FragmentTransaction.commit()
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
두 가지 방법 ViewPager의 부모 활동 내지 나에게 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)
를 나는 내가 사용하는 방식과 같은 예외하지만도를 대표 유래에 질문을 많이 발견했다.
FragmentTransaction은 어디에 생성합니까? 활동이 완료되는 동안 완료되는 것 같습니다. – jmcdonnell40
@ jmcdonnell40 나는 onClick의 결과로 그것을 만들고 있는데, 클릭 동작은 Activity의 다른 조각에서 발생합니다. –
호기심에서 벗어나 commit()을 commitAllowingStateLoss()로 변경하고 작동하는지 확인하십시오. – jmcdonnell40