![](/img/trans.png)
[英]Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference when using Navigation Drawer
[英]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為空)
更完整的堆棧跟蹤-但不是問題的一部分..................
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.