La mia applicazione Android ha un ActionBar
che cambia che Fragment
occupa un determinato FrameLayout
. Sto cercando di utilizzare onSaveInstanceState
per salvare lo stato di un frammento quando la scheda viene modificata, in modo che possa essere ripristinata in onCreateView
.Scollegamento di un frammento non attivando onSaveInstanceState()
Il problema è, onSaveInstanceState
non viene mai chiamato. I metodi e onCreateView
vengono chiamati, ma lo Bundle
fornito a onCreateView
rimane nullo.
Qualcuno può spiegare a me quando onSaveInstanceState
è effettivamente chiamato, come posso fare in modo che viene chiamato quando si passa le schede, o la migliore pratica per il salvataggio e il ripristino dello stato di un Fragment
quando si è staccato e riattaccato?
Frammento:
@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
}
attività:
/**
* 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);
}
}
Possibile copia di http://stackoverflow.com/questions/8503629/fragments-onsaveinstancestate-never-called – DeeV
ciò che è frEventLog? –