Cita:
Originalmente Escrito por kriogeN
Lo que dice Arasthel funciona en la mayoría de los casos, pero si la Activity se ha destruido es probable que cuando vayas a buscar el Fragment no lo encuentres, si cuando se vuelva a crear la Activity quieres estar 100% seguro de que lo vas a encontrar tienes que almacenarlo en el Bundle, igual que cualquier otro objeto de la Activity que quieras almacenar, sólo que se hace de una forma especial, lo que yo hago es lo siguiente:
En el onSaveInstanceState hago esto:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "crearplanfragment", fragment);
}
Y en el onCreate hago esto:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...................
fragment = new CrearPlanFragment();
if (savedInstanceState==null)
fragment = new CrearPlanFragment();
else
fragment = (CrearPlanFragment) getSupportFragmentManager().getFragment(savedInsta nceState, "crearplanfragment");
.............
}
Por cierto que yo nunca uso el onRestoreInstanceState, prefiero comparar si el savedInstanceState del onCreate es NULL.
|
Buenas, voy a recuperar este hilo ya que me estoy ayudando de el, y me sucenden cosas estrañas o no se aplicarlo bien.
Mi problema es que tengo diferentes fragments que cargo con el drawermenu, pero a la hora de salvarlo como comentas me da force close, ¿solo puedo salvar un fragment? y en ese caso com se que fragment tendría guardado a la hora de recuperarlo para hacer el cast al tipo de mi fragment?
Por otro lado, ¿que manera es mejor de manejar los fragment ?
Es mejor hacer un new mifragment() cada vez que pulso la opción del menu, o inicializar todos los fragment al empezar la actividad y luego ir reemplazandolos.
haciendo un new cada vez que pulso pierdo suavidad en la aplicación cuando pulso de nuevo el mismo menu, y con la segunda opción aveces pierdo datos