【问题标题】:Odd logcat error when switching to new fragment切换到新片段时出现奇怪的 logcat 错误
【发布时间】:2015-02-23 10:17:09
【问题描述】:

我还没有遇到过这样的堆栈跟踪。这特别奇怪,因为我只能在调试时抛出错误。 (运行应用程序 调试不会产生此错误)。这发生在从我的导航抽屉中选择特定页面时。我最近刚刚从活动切换到片段,我可能没有正确处理我的片段事务。我将不胜感激任何意见!非常感谢各位,节日快乐!

这是堆栈跟踪:

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();`

感谢任何想法和意见:)

【问题讨论】:

标签: android android-fragments


【解决方案1】:

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

【讨论】:

  • 也为我工作。但似乎是 Android Studio 中的错误。我的版本是 1.2.2
  • 在 Android 2.0 Preview 中也为 mee 工作过。
【解决方案2】:

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

【讨论】:

  • 你是怎么想的??谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 2015-03-16
  • 2011-01-08
相关资源
最近更新 更多