Fragment’s onSaveInstanceState () nunca se llama

Intento guardar datos en OnSaveInstanceState () de un fragmento, pero nunca se llama al método.

¿Alguien puede 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 una onSaveInstanceState en mi FragmentActivity que no llamó a super.onSaveInstanceState(Bundle outState) . Una vez que agregué eso, el Fragment.onSaveInstanceState(Bundle outState) funcionó normalmente.

Encontré la misma pregunta con usted y probé el método SaveInstanceState (), pero no funcionó.

Creo que onSaveInstanceState () solo funciona para el escenario en el que el usuario salta de una actividad a otra y viceversa, no funciona en el escenario en 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 que android:configChanges verificar es asegurarte de que la Actividad que contiene el fragmento no impida un reinicio al incluir el indicador android:configChanges en el android:configChanges AndroidManifest.xml.

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

Intente llamar a FragmentManager # saveFragmentInstanceState y a Fragment # setInitialSavedState en Activity. Llama a saveFragmentInstanceState, luego framework invocará a SaveAstanceState. Y llama a setInitialSavedState, entonces framework llamará aCreateView sin argumento nulo ‘Bundle savedInstanceState’.

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