我还没有遇到像这样的堆栈跟踪。它特别奇怪,因为我只能在调试时得到错误。 (在没有调试的情况下运行应用程序不会产生此错误)。从导航抽屉中选择特定页面时会发生这种情况。我刚刚从活动切换到片段,我可能没有正确处理我的片段事务。我很感激任何输入!非常感谢,节日快乐!
这是堆栈跟踪:
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();`
赞赏任何想法和意见:)
答案 0 :(得分:26)
我最近在Android工作室遇到了同样的错误消息。我可以运行我的应用程序但是一旦我尝试开始调试,我就会收到“尝试从字段'读取'boolean android.support.v4.app.BackStackRecord.mAddToBackStack'对空对象引用”。解决方案是在Android Studio中选择Run(工具栏) - >查看断点 - >逐个禁用每个断点,直到调试再次开始工作。这样做并不会完全消除断点,只是简单地禁用它们,因此无需担心您需要删除所有断点以找到导致问题的断点。似乎我在IntentService类中设置的一个断点导致了这个问题。我不确定它为什么会导致问题,但它似乎为我修复了这个错误。
答案 1 :(得分:19)
我找到了解决此问题的方法。在android.support.v4.app.BackStackRecord.run()
方法中放置一个断点,并将中断条件设置为false
。