2015-10-19 12 views
12

sto affrontando molto strano problema con questo stacktrace:FragmentManager - IllegalStateException - No Host

Fatal Exception: java.lang.IllegalStateException No host 
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1194) 
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1189) 
    android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated (FragmentManager.java:2001) 
    android.support.v4.app.Fragment.performActivityCreated (Fragment.java:1976) 
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1051) 
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1207) 
    android.support.v4.app.BackStackRecord.run (BackStackRecord.java:738) 
    android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1572) 
    android.support.v4.app.FragmentManagerImpl$1.run (FragmentManager.java:493) 
    android.os.Handler.handleCallback (Handler.java:733) 
    android.os.Handler.dispatchMessage (Handler.java:95) 
    android.os.Looper.loop (Looper.java:146) 
    android.app.ActivityThread.main (ActivityThread.java:5593) 
    java.lang.reflect.Method.invokeNative (Method.java) 
    java.lang.reflect.Method.invoke (Method.java:515) 
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1283) 
    com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099) 
    dalvik.system.NativeStart.main (NativeStart.java) 

ho rintracciato 4 occorrenze di questo incidente su più versioni di Android (4.1.2, 4.2.2, 6.0). Io uso o molto di Fragments, il che significa che non riesco a capire dove viene lanciata esattamente l'eccezione.

Codice di FragmentManager:

void moveToState(int newState, int transit, int transitStyle, boolean always) { 
    if (mHost == null && newState != Fragment.INITIALIZING) { 
     throw new IllegalStateException("No host"); 
    } 
    ... 
} 

A mio parere, questo accade quando non v'è nessun host Activity appartenenti a Fragment. I ve read this exception is sometimes thrown when setRetainInstance() `viene chiamato, ma non lo uso affatto.

Grazie per ogni consiglio.

+2

Ciao ragazzi, avete ancora qualche soluzione per questo problema? –

risposta

3

Se è stato nidificato Fragment (che ha Attività padre estende FragmentActivity), quindi utilizzare getChildFragmentManager() anziché getFragmentManager().

È inoltre possibile utilizzare getSupportFragmentManager().

EDIT: Se questo frammento è un bambino di un altro frammento, il FragmentManager tornato qui sarà il genitore del getChildFragmentManager().

NOTA: Restituisce l'oggetto host di questo frammento. Può restituire null se il frammento non è attualmente ospitato. Vedere http://developer.android.com/reference/android/app/Fragment.html#getHost()

+0

Si prega di chiarire la risposta. È confusionario. Dovremmo darci un supporto o un altro manager? – Siddharth

+0

Grazie per la riproduzione. Si prega di controllare la mia risposta modificata. Vuoi più aiuto sentiti libero di chiedere. – pRaNaY

+0

fammi provare a correggerlo. lo rivedi. – Siddharth

0

Ho lo stesso problema e questo sembra essere il problema rilevante: https://code.google.com/p/android/issues/detail?id=42601. Nelle versioni precedenti della libreria di supporto v4 l'eccezione era java.lang.IllegalStateException: No activity.

Ho provato la soluzione n. 10 ma non ha funzionato per me.

1

Non sono sicuro del motivo per cui si sta verificando questo errore. Ho ricevuto questo errore quando riutilizzavo Frammenti e non chiamavo

fragmentManager.executePendingTransactions() 
Problemi correlati