2014-12-25 14 views
22

Nie natrafiłem na ślad stosu, taki jak ten. Jest to szczególnie dziwne, ponieważ podczas debugowania mogę uzyskać komunikat o błędzie. (Uruchamianie aplikacji bez debugowania nie daje tego błędu). Dzieje się tak po wybraniu konkretnej strony z mojej szuflady nawigacji. Niedawno przełączyłem się z działań na fragmenty i mogłem nie obsługiwać poprawnie transakcji fragmentu. Byłbym wdzięczny za wszelkie dane wejściowe! Wielkie dzięki, wesołych świąt!Nieparzysty błąd logcat podczas przełączania na nowy fragment

Oto ślad stosu:

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) 

A oto jak ja obchodzenia moje zmiany fragmentu (nie wiem, czy to jest problem, po prostu sądząc po tym, że ślad wspomina backstack). Aplikacja ulega awarii (ponownie, tylko podczas debugowania), niezależnie od tego, czy zadzwonię pod numer 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();` 

Wszelkie pomysły i wejścia są doceniane :)

+0

Może być podobny do http://stackoverflow.com/questions/13393693/android-fragmentmanager-backstackrecord-run-throwing-nullpointerexception – Kai

+0

i czy 'frag' lub' ft' są zerowe przez przypadek? –

Odpowiedz

19

znalazłem obejście tego problemu. Umieść punkt przerwania w metodzie android.support.v4.app.BackStackRecord.run() i ustaw warunek przerwania na false.

enter image description here

+0

Jak rozwiązać? – Richard

+0

@Richard Po prostu przełóż punkt. Ale nie wiem, dlaczego to działa ... – h6ah4i

+0

Ponowne uruchomienie urządzenia z systemem Android rozwiązało problem. – jpros

26

Niedawno wpadłem na ten sam komunikat o błędzie w Android studio. Mogę uruchomić moją aplikację, ale gdy spróbuję rozpocząć debugowanie, otrzymam "Próba odczytu z pola" boolean android.support.v4.app.BackStackRecord.mAddToBackStack "na odwołanie do obiektu zerowego". Rozwiązaniem było wybranie w Android Studio, Uruchom (pasek narzędzi) -> Wyświetl punkty przerwania -> wyłączaj każdy punkt przerwania jeden po drugim, dopóki debugowanie nie rozpocznie się ponownie. Wykonanie tego nie usuwa całkowicie punktu przerwania, po prostu wyłącza je, więc nie musisz się martwić, że musisz usunąć wszystkie punkty przerwania, aby znaleźć przyczynę problemu. Wygląda na to, że przyczyną problemu był jeden z punktów przerwania, które utworzyłem w klasie IntentService. Nie jestem pewien, dlaczego spowodował problem, ale wydaje mi się, że naprawił ten błąd.

+0

To zadziałało dla mnie, dziękuję! – wblaschko

+0

Dzięki, pracowałem dla mnie. – user1154390

+0

Pracował również dla mnie. Ale wydaje się być błędem w Android Studio. Moja wersja to 1.2.2 –

Powiązane problemy