fragmento de Android onRestoreInstanceState


Respuestas:


200

Los fragmentos no tienen onRestoreInstanceStatemétodo.

Puede lograr el mismo resultado en onActivityCreated, que recibe un paquete con el estado de instancia guardado (o nulo).

Consulta el código fuente aquí .


90
Ese no es un diseño consistente, ¿verdad?
Ehtesh Choudhury

4
Esto tampoco se ocupa de reanudar el fragmento, ¿verdad? está bien para los cambios de configuración, pero ¿qué pasa si vas a una actividad desde un fragmento y luego vuelves al fragmento?
speedynomads

1
Los fragmentos deben pertenecer a una actividad para empezar, por lo que si guarda en el fragmento, se guarda en la actividad principal. Entonces, si deja ese fragmento (que pertenece a una actividad) y vuelve al fragmento, todos los valores se restauran a partir de la actividad principal
Shaun

3
onActivityCreated () no es el único método para restaurar el estado del fragmento. Puede restaurarlo durante onCreate (), onCreateView () o onActivityCreated (). developer.android.com/guide/components/fragments.html
shaby

1
@EhteshChoudhury Nada en el desarrollo de aplicaciones de Android es un "diseño coherente". Todo está desordenado y todo está "obsoleto".
Karanveer Singh

43

Sé que ha aceptado la respuesta, pero debe leer la documentación oficial sobre los fragmentos , y dice (párrafo "Manejo del ciclo de vida de los fragmentos"):

Puede conservar el estado de un fragmento mediante un paquete, en caso de que se elimine el proceso de la actividad y necesite restaurar el estado del fragmento cuando se vuelva a crear la actividad. Puede guardar el estado durante la devolución de llamada onSaveInstanceState () del fragmento y restaurarlo durante onCreate (), onCreateView () o onActivityCreated ()

Por lo tanto, se puede utilizar que más le convenga: onCreate(), onCreateView()oonActivityCreated()


29

En el ejemplo de ListFragment de la guía Fragments puede encontrar:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}

Que puedes usar así:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }
}

onActivityCreated() se invoca después de que el fragmento regresa de la pila.


13

onViewStateRestoredde Fragmentes el equivalente de onRestoreInstanceStatede Activity. Pero se llama después onActivityCreated(Bundle)y antes onStart().

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.