2016-04-11 7 views
8

Ich füge Inhaltsübergänge zu einer ziemlich großen App hinzu und in den meisten Fällen habe ich keine geteilten Elemente, möchte aber trotzdem die Übergangsanimationen verwenden. Ich habe das Problem auf dieser Codezeile verfolgt:Conent Transition NPE mit leeren geteilten Elementen

ActivityOptionsCompat.makeSceneTransitionAnimation(activity, ????); 

Ich habe versucht Einstellung Pair-Array oder ein leeres Array auf null, und ich habe versucht, es einfach auszulassen. Alles führt zu dem folgenden Fehler:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewRootImpl.setPausedForTransition(boolean)' on a null object reference 

Allerdings bekomme ich nur diesen Fehler auf Android 6.0+, es funktioniert auf jeder Android-Version 5. Bin ich versucht, dies in die falsche Art und Weise zu tun?

+0

Haben Sie eine Lösung für dieses Problem gefunden? – Eitan

+0

Keine wirkliche Antwort daher der Kommentar. Die Exception scheint nichts Wichtiges zu stören. Wenn Sie also die Exception abfangen, funktioniert die Animation einwandfrei – Olumide

Antwort

0

Es ist keine genaue Antwort, eher ein Workaround; aber ich habe es geschafft, dies zu lösen, indem ich Animationen mit handler.postDelayed(...) und Runnable verschiebe.

Sie können den Code meiner Lösung in this Frage überprüfen.

Um ehrlich zu sein, ist es immer noch ein bisschen zu hacky für mich und deshalb warte ich immer noch auf Antworten mit eleganteren Lösungen. Außerdem denke ich, dass es nur in ähnlichen Fällen sinnvoll ist, wenn Übergänge direkt nach dem Erstellen der Ansicht aufgerufen werden.

0

Ich konfrontiert ein ähnliches Problem. Das Problem war, dass ich

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK) 

gesetzt habe, die die Aktivität tötete, von der ich den Übergang startete. Entfernen das behoben das Problem für mich auf Android M.

2

Ich habe eine Reihe von Graben im Quellcode und es sieht aus wie dies durch eine missed null pointer check that got fixed for Nougat verursacht wird.

Ich habe leider keine Ahnung, wie man es am 6.x umgehen kann. Ich nehme an, Sie könnten ein 6.x try/catch hinzufügen, wenn es Sie in Bezug auf Abstürze wirklich tötet, aber das kann auch eine Menge anderer Sachen fangen, die Sie möglicherweise nicht wollen.