2011-03-23 30 views

Respuesta

167

Los fragmentos no tienen un método onRestoreInstanceState.

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

Compruebe el código fuente here.

+68

Eso no es un diseño consistente, ¿verdad? –

+4

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

+1

Para empezar, los fragmentos deben pertenecer a una actividad, por lo que si guarda en el fragmento, se guarda en la actividad principal. Por lo tanto, si deja ese fragmento (que pertenece a una actividad) y vuelve al fragmento, todos los valores se restauran de la actividad principal – Shaun

21

En ListFragment de fragmentos guía example se puede encontrar:

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

que se puede utilizar de esta manera:

@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 vuelve de nuevo de la pila.

28

que sé, que ha aceptado respuesta, pero debería leer el official documentation about fragments, y dice (párrafo "Manejo de la Fragmento del ciclo de vida"):

puede conservar el estado de un fragmento usando un paquete , en caso de que se mate el proceso de la actividad y necesite restaurar el estado del fragmento cuando se recrea la actividad. Puede guardar el estado durante onSaveInstanceState del fragmento() de devolución de llamada y restaurarla, ya sea durante onCreate(), onCreateView(), o onActivityCreated()

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

5

onViewStateRestored de Fragment es el equivalente de onRestoreInstanceState de Activity. Pero se llama después de onActivityCreated(Bundle) y antes de onStart().

Cuestiones relacionadas