2016-05-09 7 views
5

Ho una semplice attività e frammento trattenuto, proprio come Alex Lockwood blog post example.FragmentManager: moveToState: stato del frammento per GridFragment {...} non aggiornato in linea; stato atteso 1 trovato 0

mia attività va in questo modo all'interno onCreate():

FragmentManager fm = getSupportFragmentManager(); 
    retainedFragment = (GridFragment) fm.findFragmentByTag(RETAINED_FRAGMENT_TAG); 

    // If the Fragment is non-null, then it is currently being 
    // retained across a configuration change. 
    if (retainedFragment == null) { 
     retainedFragment = new GridFragment(); 
     fm.beginTransaction().add(retainedFragment, RETAINED_FRAGMENT_TAG).commit(); 
    }else{ 
     list = retainedFragment.getList(); 
     System.out.println(list.size());//OUTPUT 12 
    } 

E il mio Fragments 'onAttach() è:

@Override 
public void onAttach(Context activity) { 
    super.onAttach(activity); 
    mCallbacks = (TaskCallbacks) activity; 
    System.out.println("here"); //OUTPUT here 
} 

Ora, su ogni rotazione dello schermo che ho molto strana uscita:

I/System.out: qui

W/FragmentManager: moveToState: stato frammento per GridFragment {95fc9db # 0 retained_tag} non aggiornato in linea; previsto stato trovato 1 0

I/System.out: 12

Dove è quello strano avvertimento arriva da destra tra le mie entrate? Come affrontarlo? Grazie in anticipo!

+0

+1 Lo stesso per me. Hai trovato qualche soluzione?L'app sta rallentando dopo circa 20 cambi di rotazione, fino a quando non chiudo e riapilo. –

risposta

8

Questo messaggio non ha importanza e il registro in più è stato rimosso in Support Library v24.0.0 Questo è sviluppatore ufficiale answer:

Per i curiosi, FragmentManager.moveToState ora aggiorna il nuovo stato frammento come va piuttosto che alla fine dopo che tutte le fasi di cambio di stato sono state completate. Ciò risolveva alcuni interessanti bug relativi all'uso del gestore frammenti figlio e executePendingTransactions da uno dei callback del ciclo di vita del frammento genitore.

Una delle transizioni di stato come stiamo portando un frammento Up è un no-op che non è stato sempre stato aggiornato in linea, e il registro il gioco è Vedere per annunciando che abbiamo fatto alla fine invece, esattamente come abbiamo prima del 23.2.

2

Ho riscontrato lo stesso comportamento diversi giorni fa durante lo spostamento dalla libreria di supporto appcompat-v7 da 23.1.1 a 23.4.0.

Sembra che l'errore sia nella nuova libreria di supporto. Con 23.1.1 non stavo avendo l'errore. Dopo aver esaminato per un po ', posso vedere che l'errore è stato introdotto in 23.2.0.

Se è possibile tornare indietro a 23.1.1, l'avviso non verrà visualizzato.

Un problema simile è menzionata qui: https://code.google.com/p/android/issues/detail?id=202037

Ma sembra che era solo indagato e in relazione con le schede. Il problema sembra contrassegnato come risolto per una versione futura. Ma non so se questo risolverà il nostro caso d'uso.

Spero che questo aiuti con il problema.

Problemi correlati