2014-12-25 42 views
22

我還沒有遇到像這樣的堆棧跟蹤。這特別奇怪,因爲我只能在調試時出現錯誤。 (運行應用程序而沒有調試不會產生此錯誤)。這發生在從我的導航抽屜中選擇特定頁面時發生。我剛剛從活動切換到片段,我可能沒有正確處理我的片段交易。我將不勝感激任何投入!謝謝很多傢伙,節日快樂!切換到新片段時奇怪的logcat錯誤

這裏的堆棧跟蹤:

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

可能在性質上類似於http://stackoverflow.com/questions/13393693/android-fragmentmanager-backstackrecord-run-throwing-nullpointerexception – Kai

+0

並且'frag'或'ft'爲空嗎? –

回答

19

我發現這個問題的解決方法。在android.support.v4.app.BackStackRecord.run()方法中放置一個斷點,並將中斷條件設置爲false

enter image description here

+0

如何解決? – Richard

+0

@Richard只需設置一個斷點。但我不知道它爲什麼工作... – h6ah4i

+0

重新啓動Android設備解決了我的問題。 – jpros

26

我最近碰到了Android Studio中相同的錯誤消息。我可以運行我的應用程序,但是一旦我嘗試開始調試,我會收到「嘗試從字段'boolean android.support.v4.app.BackStackRecord.mAddToBackStack'讀取空對象引用」。解決方案是在Android Studio中選擇運行(工具欄) - >查看斷點 - >逐個禁用每個斷點,直到調試開始再次運行。這樣做並不能完全消除中斷點,它只是禁用它們,所以不必擔心需要刪除所有中斷點才能找到導致問題的中斷點。看來,我在IntentService類中設置的一個突破點導致了這個問題。我不確定它爲什麼會導致問題,但它似乎爲我解決了這個錯誤。

+0

這對我有效,謝謝! – wblaschko

+0

謝謝,爲我工作。 – user1154390

+0

也爲我工作。但似乎是Android Studio中的錯誤。我的版本是1.2.2 –