Pracuję nad aplikacją przy użyciu Xamarin.Forms do użytku na wielu platformach. Niedawno zaktualizowałem Xamarin Studio na Macu wraz z aktualizacją pakietów NuGet.Xamarin "próba wywołania metody wirtualnej" void android.view.View.unFocus (android.view.View) "przy odwołaniu do obiektu zerowego"
Otrzymuję teraz ten błąd: próba wywołania metody wirtualnej "void android.view.View.unFocus (android.view.View)" na odwołaniu do obiektu zerowego. (Zobacz opis stosu poniżej)
Występuje podczas nawigacji z dala od (lub ponownego renderowania) dowolnej strony z wyjątkiem widoku głównego. Nie wierzę, że zmieniłem jakąkolwiek część mojej nawigacji lub renderowania strony.
Przykro mi, jeśli to trochę niejasne, wynika to ze śladu stosu, że to nie zaczyna się od mojego kodu (w jakikolwiek identyfikowalny sposób). I nie jestem pewien, gdzie rozpocząć debugowanie. Każda rada byłaby bardzo pomocna!
Śledzenie stosu
--- End of managed Java.Lang.NullPointerException stack trace ---
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.unFocus(android.view.View)' on a null object reference
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4937)
at android.view.ViewGroup.removeViewAt(ViewGroup.java:4899)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1540)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
EDIT: Dzieje się tak tylko na Androidzie.
EDYCJA: Dodatkowa informacja: Zdarza się to głównie podczas połączenia z Nawigacją.PushAsync lub Navigation.PopAsync (w tym naciśnięcie przycisku wstecz).
Oto najprostszy przykład tego występującego w mojej aplikacji: Począwszy od ekranu głównego, użytkownik może podjąć działanie prowadzące do strony skanowania kodu QR. Ten kod QR zawiera informacje na temat obciążenia, które ten sterownik będzie dostarczał. Po zeskanowaniu zapisuję informacje i pop strony skanowania z nawigacji, a następnie automatycznie popychać je do ekranu ładowania. Po załadowaniu danych popycham je do listy potrzebnych informacji. (Więc teraz stos nawigacyjny ma [main, loading_screen, list_view]) Jeśli w tym momencie zostanie wywołana jakakolwiek Nawigacja.PopAsync (lub PushAsync), to aplikacja ulega awarii.
Po uruchomieniu nawigacji można znaleźć miejsce, w którym kod wywołuje funkcję unFocus? –
Nigdy nie wykonuję żadnych połączeń nieostrych bezpośrednio. Zdarza się to po wywołaniu funkcji Navigation.PushAsync lub Navigation.PopAsync (w tym naciśnięcie przycisku wstecz). Uwaga: dokonam edycji, aby uwzględnić to w pytaniu. – Kallmanation