TabWidget onClick after onSaveInstanceState (java.lang.IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState)
He creado un fragmento de widget de pestaña después de fragmentar el paquete de compatibilidad de ejemplo, cambio de fragmento en onTabChanged
pero tengo algunos informes de mercado que manchas IllegalStateException
después de onSaveInstanceState
, esto es causado por pedir un commit a fragment manager después de llamar a onSaveInstanceState()
, pero cómo ¿Recibo un performClick después de que onSaveInstanceState
se llama?
El seguimiento de la pila:
- Ocultar una pestaña en el TabHost en Android
- Personalizar el color de texto de la pestaña seleccionado en SlidingTabLayout
- Pestaña simple que utiliza fragmentactivity en lugar de tabactivity
- Cómo cambiar las pestañas de forma programática mediante buttonclick en Android
- Android ActionBar.Tab setCustomView () no cumple fill_parent
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314) at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325) at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:548) at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:532) at my.app.NewsTab.onTabChanged(NewsTab.java:144) at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:378) at android.widget.TabHost.setCurrentTab(TabHost.java:363) at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:149) at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:559) at android.view.View.performClick(View.java:3122) at android.view.View$PerformClick.run(View.java:12012) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:132) at android.app.ActivityThread.main(ActivityThread.java:4126) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:491) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) at dalvik.system.NativeStart.main(Native Method)
Parece que esto fue de alguna manera discutido (por buscar el error), pero para mí es sólo un efecto secundario, un error en el apoyo? También he leído acerca de un ciclo de vida de aplicación diferente para nido de abeja +, pero hacer clic después de guardar la instancia me parece un comportamiento increíble
¿Debo utilizar commitAllowingStateLoss()
o mTabHost.setOnClickListener(null)
en onSaveInstanceState
?
Lamentablemente no puedo reproducir, solo veo informes raros en la consola de desarrolladores
La actividad tiene android:configChanges="orientation|screenLayout"
He probado el ciclo de vida también con "siempre terminar"
El conmutador de fragmentos de pestañas está dentro de un ViewPager, pero dudo que pueda estar relacionado
- ¿Cómo ir a otras pestañas haciendo clic en un botón de la pestaña actual en Android?
- Ocultar un diseño cuando el foco en él se pierde en XML
- Cambiar las actividades mediante ActivityGroup en la pestaña (Android)
- "El tipo TabActivity está obsoleto" Para la pestaña de la aplicación
- Función de parada que llama en pestañas
- Android Añadir pestaña dentro del fragmento
- Creación de botones de pestaña personalizados
- Ocultar el título de una barra de acciones no funciona en las versiones anteriores de Android (con ActionBarSherlock)
El problema es que intenta cometer una FragmentTransaction
después de que el método onSaveInstanceState()
se ha llamado. Esto no está permitido por las razones descritas en esta entrada del blog .
onSaveInstanceState()
se llama después de que la Actividad haya desaparecido del primer plano. No se puede hacer nada después de guardar el estado. Por favor, si puede, comparta su código para comprobarlo. onSaveInstanceState()
realizar los cambios antes de llamar onSaveInstanceState()
método onSaveInstanceState()
.
- ¿Por qué dice que "No se puede hacer referencia a una variable no final i dentro de una clase interna definida en un método diferente"?
- Cómo pasar variables dentro y fuera de AsyncTasks?