切换到新片段时出现奇怪的logcat错误

时间:2014-12-25 23:03:42

标签: android android-fragments

我还没有遇到像这样的堆栈跟踪。它特别奇怪,因为我只能在调试时得到错误。 (在没有调试的情况下运行应用程序不会产生此错误)。从导航抽屉中选择特定页面时会发生这种情况。我刚刚从活动切换到片段,我可能没有正确处理我的片段事务。我很感激任何输入!非常感谢,节日快乐!

这是堆栈跟踪:

Process: com.kohlerbear.whowascnscalc, PID: 2415
java.lang.NullPointerException: Attempt to read from field 'boolean android.support.v4.app.BackStackRecord.mAddToBackStack' on a null object reference
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:685)
        at android.support.v4.app.FragmentManagerImpl.execPeerrorndingActions(FragmentManager.java:1479)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:447)
        at android.os.Handler.handleCallback(Handler.java:740)
        at android.os.Handler.dispatchMessage(Handler.java:104)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5223)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

这就是我如何处理我的片段更改(不确定这是否是问题,只是通过跟踪提到后台堆栈的事实来判断)。无论我是否致电ft.addToBackStack(null),该应用程序都会崩溃(仅在调试时)。

Fragment frag = new ThirdScreenFragment(); 
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_frame, frag);
ft.addToBackStack(null);
ft.commit();`

赞赏任何想法和意见:)

2 个答案:

答案 0 :(得分:26)

我最近在Android工作室遇到了同样的错误消息。我可以运行我的应用程序但是一旦我尝试开始调试,我就会收到“尝试从字段'读取'boolean android.support.v4.app.BackStackRecord.mAddToBackStack'对空对象引用”。解决方案是在Android Studio中选择Run(工具栏) - >查看断点 - >逐个禁用每个断点,直到调试再次开始工作。这样做并不会完全消除断点,只是简单地禁用它们,因此无需担心您需要删除所有断点以找到导致问题的断点。似乎我在IntentService类中设置的一个断点导致了这个问题。我不确定它为什么会导致问题,但它似乎为我修复了这个错误。

答案 1 :(得分:19)

我找到了解决此问题的方法。在android.support.v4.app.BackStackRecord.run()方法中放置一个断点,并将中断条件设置为false

enter image description here