android - navegar - Fragment''s onSaveInstanceState() nunca se llama
onsaveinstancestate android example (6)
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
}
}
En algunas situaciones, puede resultarle útil utilizar argumentos de fragmentos en lugar de savedInstanceState
. Explicación adicional
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
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.
Intente llamar a setRetainInstance(true)
en onCreate(Bundle savedInstanceState)
.
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''.
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.