Mi aplicación Android tiene un ActionBar
que cambia que Fragment
ocupa un cierto FrameLayout
. Estoy tratando de usar onSaveInstanceState
para guardar el estado de un Fragmento cuando se cambia la pestaña, para que pueda ser recuperado en onCreateView
.Separar un Fragmento que no desencadena onSaveInstanceState()
El problema es, onSaveInstanceState
Nunca se llama. Se llaman los métodos Fragment
onDestroyView
y onCreateView
, pero el Bundle
suministrado a onCreateView
permanece nulo.
¿Puede alguien explicarme cuándo se llama realmente onSaveInstanceState
, cómo puedo asegurarme de que se llama cuando se cambian las pestañas, o las mejores prácticas para guardar y restablecer el estado de un Fragment
cuando se desconecta y se vuelve a conectar?
Fragmento:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.event_log, container, false);
// Retrieve saved state
if (savedInstanceState != null){
System.out.println("log retrieved");
} else {
System.out.println("log null");
}
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
System.out.println("log saved");
super.onSaveInstanceState(outState);
// more code
}
Actividad:
/**
* Detach the current Fragment, because another one is being attached.
*/
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (tab.getText().equals(getString(R.string.tab_events))){
if (frEventLog != null) {
ft.detach(frEventLog);
}
}
copia eventual de http://stackoverflow.com/questions/8503629/fragments-onsaveinstancestate-never-called – DeeV
lo que es frEventLog? –