2015-10-19 3 views
12

я столкнулся очень странный вопрос с этим StackTrace:FragmentManager - IllegalStateException - Нет Хост

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) 

Я отслеживал 4 вхождений этой аварии на нескольких версиях Android (4.1.2, 4.2.2, 6.0). Я использую o lot Fragments, что означает, что я не могу понять, где именно выбрано исключение.

Кодекс FragmentManager:

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

На мой взгляд, это происходит, когда нет хозяина Activity принадлежащий Fragment. I ve read this exception is sometimes thrown when setRetainInstance() `вызывается, но я его вообще не использую.

Спасибо за каждый совет.

+2

Привет, ребята, есть ли у вас какое-либо решение этой проблемы? –

ответ

3

Если у вас есть вложенные Fragment (которые имеют родительскую активность, то Extrag FragmentActivity), используйте getChildFragmentManager() вместо getFragmentManager().

Вы также можете использовать getSupportFragmentManager().

EDIT: Если фрагмент является потомком другого фрагмента, FragmentManager вернулся сюда будет родителя getChildFragmentManager().

ПРИМЕЧАНИЕ: Вернуть объект-хозяин этого фрагмента. Может возвращать значение null, если фрагмент в настоящее время не размещен. См. http://developer.android.com/reference/android/app/Fragment.html#getHost()

+0

Просьба уточнить ваш ответ. Это смущает. Должен ли мы использовать getupportfragementmanager или нет? – Siddharth

+0

Спасибо за повтор. Проверьте мой отредактированный ответ. Хотите получить дополнительную помощь, не стесняйтесь спрашивать. – pRaNaY

+0

Позвольте мне исправить ошибку. вы его просмотрите. – Siddharth

0

У меня такая же проблема, и это похоже на проблему: https://code.google.com/p/android/issues/detail?id=42601. В предыдущих версиях библиотеки поддержки v4 исключение составляло java.lang.IllegalStateException: No activity.

Я пробовал обходное решение № 10, но это не сработало для меня.

1

Я не уверен, почему вы получаете эту ошибку. Я получил эту ошибку, когда я повторно использовал фрагменты и не звонил

fragmentManager.executePendingTransactions() 
Смежные вопросы