首先,我正在使用兼容性库,这是我得到的错误:
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();
为什么会发生这种情况的任何想法?
答案 0 :(得分:7)
弄清楚它是什么。我正在使用Roboguice注入一些组件,并且由于上面没有显示的某些逻辑,片段为空。如果任何片段为空transaction.hide(fragment)
,则会发生上述异常。
修复逻辑错误后,片段不再为空。那时应用程序按预期工作。