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?
- Fragmentos y onConfigurationChanged
- Recycler View No se muestra
- Cómo crear un diseño multi-panel en android
- Cargar todos los fragmentos en la apertura de la aplicación
- Android Image Slider de Daimajia no funciona en un Fragmento pero funciona cuando no está en un Fragmento
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 } }
- Volver a seleccionar el elemento de menú NavigationView correcto después de pulsar el botón Atrás
- Problemas en el uso de nuevo componente de la barra de herramientas, ocultar y mostrar Icono del cajón de navegación, icono de inicio de clic de iconos de fragmentos
- Android Fragment onAttach () desaprobado
- ¿Cómo elegir Actividad o Fragmento si ambos escenarios son posibles?
- cómo hacer clic en el botón de acción flotante en un fragmento?
- FragmentTabHost Scrollview Horizontal + Paseo Android
- Acerca de Android Progress Dialog. ¿Evitar?
- Llamar setDisplayHomeAsUpEnabled para fragmentos en ActionBarCompat
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()); }