java - 哪个引用变量为空 - 尝试从空对象引用的字段 'android.os.Handler android.support.v4.a.m.a' 读取

标签 java android

我有一个堆栈跟踪,但不清楚哪个引用变量为空。

尝试从字段 'android.os.Handler android.support.v4.a.m.a' 读取空对象引用

if (Looper.myLooper() != mActivity.mHandler.getLooper()) {

(我的意见是 mActivity 为空)

  1. mActivity 为空?
  2. mHandler 为空?

更完整的堆栈跟踪 - 但不是问题的一部分......................

D/AndroidRuntime( 8354): Shutting down VM
E/AndroidRuntime( 8354): FATAL EXCEPTION: main
E/AndroidRuntime( 8354): Process: za.co.nedsecure.nedbankROA.ete, PID: 8354
E/AndroidRuntime( 8354): java.lang.NullPointerException: Attempt to read from field 'android.os.Handler android.support.v4.a.m.a' on a null object reference
E/AndroidRuntime( 8354):at android.support.v4.a.s.f(FragmentManager.java:1476)
E/AndroidRuntime( 8354):at android.support.v4.a.s.b(FragmentManager.java:490)
E/AndroidRuntime( 8354):at xyz.......MainActivity.a(MainActivity.java:299)

MainActivity 代码为:

if (mainActivityWeakReference.get() != null) {
                    mainActivityWeakReference.get().getSupportFragmentManager().executePendingTransactions();
                }

我的修复:(我希望就是这样)

if (mainActivityWeakReference.get() != null && !mainActivityWeakReference.get().isFinishing()) {
                    mainActivityWeakReference.get().getSupportFragmentManager().executePendingTransactions();
                }

最佳答案

您必须阅读更多堆栈跟踪以获取更多线索,但真正找到这些线索的最简单方法是将表达式放在多行中。

if (Looper
  .myLooper() 
  != 
  mActivity
  .mHandler
  .getLooper()) {

请记住在提交源之前撤消此操作。

关于java - 哪个引用变量为空 - 尝试从空对象引用的字段 'android.os.Handler android.support.v4.a.m.a' 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749270/

相关文章:

java - eclipse中的非静态main方法

java - 如何在RecyclerView中使用光标适配器制作多张卡片?

java - 应该如何连接数组流?

java - Firebase recyclerview 在 Release模式下不显示任何值,但在 Debug模式下完美运行

java - 应用视频效果

java - 如何旋转Android设备相机预览(libgdx)

安卓永久存储

java.util.MissingResourceException : Can't find bundle for base name javax. servlet.LocalStrings

android - 如何保持安卓上的 GPS/定位服务始终开启?

javascript - 如何使用 Rhino 在 javascript 函数中从 Java HashMap 获取值