OnSaveInstanceState () no se llama: ¿por qué?

Problema:

Añado un fragmento a un LinearLayout, programmatically. Aparece en mi actividad, genial. Giro el dispositivo -> cambios de configuración: todo se destruye para ser recreado. Pero, antes de llamarse onDestroy (), se debe llamar onSaveInstanceState (). Es el caso de la actividad de los padres, pero no del fragmento que he añadido. Por qué ?

Código:

El XML:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/parent_LL" android:stuff="myStuff" > <LinearLayout android:id="@id/categories_activity_LL1" android:stuff="myStuff" /> <LinearLayout android:id="@id/categories_activity_LL2" android:stuff="myStuff" /> </LinearLayout> 

Añado el fragmento a la interfaz de usuario en la actividad principal:

 ft.add(container1, categories, CatFragIds.CATEGORIES.toString()).commit(); 

Anular el onSaveInstanceState () de mi fragmento:

 @Override public void onSaveInstanceState(Bundle outState) { // Récupère extensible boolean extensible = ((CategoryAppsListView) this.getListView()) .isExtensible(); mState.setExtensible(extensible); // Transmet l'état de CategoriesListElems FragmentManager fm = getFragmentManager(); @SuppressWarnings("unchecked") FragRetainObject<CategoriesListElemsState> retainedState = (FragRetainObject<CategoriesListElemsState>) fm.findFragmentByTag(CATEGORIESLISTELEMS_STATE+"_"+this.getTag()); if( retainedState == null) { retainedState = FragRetainObject.<CategoriesListElemsState>newInstance(mState); fm.beginTransaction() .add(retainedState, CATEGORIESLISTELEMS_STATE+"_"+this.getTag()).commit(); } else retainedState.setRetainObj(mState); super.onSaveInstanceState(outState); } 

¡¡Gracias por tu tiempo!! Todos los derechos reservados

2 Solutions collect form web for “OnSaveInstanceState () no se llama: ¿por qué?”

Yo tuve el mismo problema. Hay dos respuestas posibles:

  1. Añadir fragmento en el archivo xml, como "fragmento android: name =" faragmentClass ", etc"
  2. Llame al método de fragmento de onSaveInstanceState manualmente. Y en el método onCreate restaurar el estado del fragmento de forma manual, cuando se agrega.

Necesitas poner el cambio de configuración como orientación y teclado en AndroidManifest.xml

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.