2011-08-04 7 views
6

私はAndroidサポートライブラリを使用して、Honeycombアプリケーションより前のフラグメントを使用しています。サポートフラグメンテーションを使用するアクティビティを開始するたびにIllegalStateExceptionsが返されるのはなぜですか?

私のアクティビティのonCreateメソッドの中にフラグメントを追加すると、アクティビティはIllegalStateExceptionでクラッシュします。

08-04 10:19:49.100: ERROR/AndroidRuntime(18501): FATAL EXCEPTION: main 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501): java.lang.RuntimeException: Unable to start activity ComponentInfo{net..../net.....homescreen...Main}: java.lang.IllegalStateException: Activity has been destroyed 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.os.Looper.loop(Looper.java:123) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at dalvik.system.NativeStart.main(Native Method) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501): Caused by: java.lang.IllegalStateException: Activity has been destroyed 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1257) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:535) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:519) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at net.....AbstractActivity.onCreate(AbstractActivity.java:103) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at net.....homescreen...Main.onCreate(..Main.java:51) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
08-04 10:19:49.100: ERROR/AndroidRuntime(18501):  ... 11 more 

AbstractActivityののonCreateは次のようになります。私は活動がnullであるため、fragmentmanagerは、この例外をスローすることを確認呼び出しをデバッグする場合

protected void onCreate(Bundle savedInstanceState) { 
    if (menuEnabled) { 
     FragmentManager fragmentManager = getCompatibleFragmentManager(); 
     FragmentTransaction transaction = fragmentManager 
       .beginTransaction(); 
     transaction.add(new OptionsMenuFragment(), OPTIONS_MENU_IDENTIFIER); 
     transaction.commit(); 
    } 
    super.onCreate(savedInstanceState); 
} 

。フラグメントマネージャは初期化されていないようです。

私は間違っていますか?

答えて

13

互換性パッケージのFragmentActivityは、フラグメントマネージャをonCreateメソッド自体で初期化することが判明しました。

私がonCreateメソッドの最初にsuperに呼び出しを移動すると、すべて正常に動作します。

+0

いいね、ありがとう。 – nobre

+4

互換性ライブラリのフラグメントを使ってIllegalStateExceptionを取得しますが、これに関連していません。superへの呼び出しはすでにonCreate(スーパークラスでも)の冒頭にあります。 – Ixx

+1

ニースはちょうど同じ問題を戻して混乱しました私はupvoteできませんでした...それは私が速い学習者ではないようです。 – Janusz

関連する問題