OnSaveInstanceState () del fragmento nunca se llama

Estoy tratando de guardar datos en un fragmento de onSaveInstanceState (), pero el método nunca se llama.

¿Puede alguien ayudar?

public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ScrollView content = (ScrollView) inflater.inflate(R.layout.content, container, false); // More stuff return content; } @Override public void onSaveInstanceState(Bundle icicle) { // NEVER CALLED super.onSaveInstanceState(icicle); //More stuff } } 

Finalmente descubrí el problema, al menos en mi caso. Tuve un onSaveInstanceState sobrepasado en mi FragmentActivity que no llamó a super.onSaveInstanceState(Bundle outState) . Una vez que agregué que en, el Fragment.onSaveInstanceState(Bundle outState) funcionaba normalmente.

Encontré la misma pregunta con usted, y probado el método de OnSaveInstanceState (), pero no trabajó.

Creo que onSaveInstanceState () sólo funciona para el escenario que el usuario salta de una actividad a otra actividad y viceversa, no funciona en el escenario de que el usuario salta entre fragmentos en la misma actividad.

Aquí está el documento guía de Google. http://developer.android.com/guide/components/tasks-and-back-stack.html#ActivityState

Una cosa a comprobar es asegurarse de que la actividad que contiene el fragmento no está impidiendo un reinicio al incluir el indicador android:configChanges en AndroidManifest.xml.

En algunas situaciones, puede resultarle útil usar argumentos de fragmentos en lugar de savedInstanceState . Explicación adicional .

Intenta llamar a FragmentManager # saveFragmentInstanceState y Fragment # setInitialSavedState en Actividad. Usted llama a saveFragmentInstanceState, entonces el framework llamará onSaveInstanceState. Y usted llama a setInitialSavedState, entonces framework llamará onCreateView sin argumento nulo 'Bundle savedInstanceState'.

Intente llamar a setRetainInstance(true) en onCreate(Bundle savedInstanceState) .

Ninguno de los anteriores funcionó para mí. Yo quería onSaveInstanceState para ser llamado cada vez que se metió otro Fragmento en la pila así que acaba de añadir una simple llamada a este método en onPause (de mi Fragmento).

 @Override public void onPause() { super.onPause(); onSaveInstanceState(new Bundle()); } 
  • No se pueden intercambiar fragmentos correctamente en las pestañas de la barra de acciones
  • Cambiar de un panel doble a un solo panel en el cambio de orientación manteniendo la pila de fragmentos
  • División de texto a través de múltiples TextViews / Fragmentos con ViewPager
  • Custom ViewPager dentro de ObservableScrollView no se mide correctamente la altura
  • ¿Cómo cambio la vista dentro de un fragmento?
  • IllegalStateException: Fragmento <ThisFragment> no está actualmente en el FragmentManager
  • Cómo ir a fragmento de la actividad
  • Android: setInitialSavedState
  • GLSurfaceView dentro del fragmento que no se representa cuando se reinicia
  • Retener el estado de fragmentos de viewpager android
  • Prueba de Fragmentos de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.