2016-04-11 16 views
8

Sto aggiungendo transizioni di contenuti a un'app piuttosto grande e nella maggior parte dei casi non ho elementi condivisi ma voglio comunque utilizzare le animazioni di transizione. Ho rintracciato il problema a questa linea di codice:NPE transizione con con elementi condivisi vuoti

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

ho cercato matrice di impostazione pari null o una matrice vuota e ho provato appena lasciando fuori. risultati tutto nel seguente errore:

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

Tuttavia, ho solo questo errore su Android 6.0 e versioni successive, funziona benissimo su qualsiasi versione di Android 5. sto cercando di fare questo nel modo sbagliato?

+0

Hai trovato una soluzione per questo problema? – Eitan

+0

Non una vera risposta da qui il commento. L'eccezione non sembra rompere nulla di importante, quindi catturare l'eccezione fa funzionare bene l'animazione – Olumide

risposta

0

Non è una risposta esatta, piuttosto una soluzione alternativa; ma sono riuscito a risolvere questo problema posticipando le animazioni usando handler.postDelayed(...) e Runnable.

È possibile controllare il codice della mia soluzione nella domanda this.

Per essere onesti, è ancora un po 'troppo hacky per me ed è per questo che sto ancora aspettando risposte con soluzioni più eleganti. Inoltre, suppongo che abbia senso solo in casi simili ai miei, quando le transizioni vengono invocate subito dopo aver creato la vista.

0

Ho affrontato un problema simile. Il problema era che stavo impostando

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

Che ha ucciso l'attività da cui stavo lanciando la transizione. Rimozione che ha risolto il problema per me su Android M.

2

Ho fatto un po 'di scavo nel codice sorgente e sembra che questo sia causato da un missed null pointer check that got fixed for Nougat.

Non ho idea di come aggirare il problema su 6.x, però, sfortunatamente. Suppongo che potresti aggiungere un 6.x try/catch se ti sta davvero uccidendo in termini di arresti anomali, ma potrebbe anche catturare un sacco di altre cose che potresti non volere.