簡體   English   中英

哪個引用變量為null-嘗試從null對象引用上的字段'android.os.Handler android.support.v4.ama'中讀取

[英]which reference variable is null - Attempt to read from field 'android.os.Handler android.support.v4.a.m.a' on a null object reference

我有一個堆棧跟蹤,目前尚不清楚哪個引用變量為null。

嘗試從空對象引用中讀取字段“ android.os.Handler android.support.v4.ama”

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

(我的意見是,mActivity為空)

  1. mActivity是否為null?
  2. mHandler是否為null?

更完整的堆棧跟蹤-但不是問題的一部分..................

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()) {

請記住在提交源代碼之前先撤消此操作。

找到此點的一個好方法是在代碼中的某個地方放置一個斷點(在此行右邊是有意義的),然后對表達式求值。

您可以在“運行”菜單中找到“評估表達式”,也可以使用不同的快捷方式,具體取決於您使用的是PC還是Mac。

然后放入表達式,然后單擊“評估”。 當您找到一個返回null的值時,您就發現了問題。

因此,嘗試運行所有可能的null,最終您將找到它:

mActivity
mActivity.mHandler

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM