纵向模式下的FragmentTransaction引发NullPointerException

时间:2011-11-23 03:03:41

标签: android android-fragments

首先,我正在使用兼容性库,这是我得到的错误:

11-22 19:57:09.111: ERROR/AndroidRuntime(28867): FATAL EXCEPTION: main
        java.lang.NullPointerException
        at android.support.v4.app.BackStackRecord.bumpBackStackNesting(BackStackRecord.java:518)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:563)
        at 

    android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1379)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:419)
            at android.os.Handler.handleCallback(Handler.java:587)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:132)
            at android.app.ActivityThread.main(ActivityThread.java:4123)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:491)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
            at dalvik.system.NativeStart.main(Native Method)

此错误仅在应用程序处于PORTRAIT方向时发生,并且我尝试使用FragmentTransaction隐藏另外两个片段并显示一个新片段。当用户按下应用程序中的按钮时,将执行此代码。

这是抛出的代码(一旦调用提交并执行,就会抛出上面的错误)。

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.addToBackStack(null);
transaction.hide(fragmentA);
transaction.hide(fragmentB);
transaction.replace(R.id.fragment_container, new PurchaseFragment());
transaction.commit();

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:7)

弄清楚它是什么。我正在使用Roboguice注入一些组件,并且由于上面没有显示的某些逻辑,片段为空。如果任何片段为空transaction.hide(fragment),则会发生上述异常。

修复逻辑错误后,片段不再为空。那时应用程序按预期工作。