Meine Android-Anwendung hat eine ActionBar
, die ändert, die Fragment
belegt eine bestimmte FrameLayout
. Ich versuche, onSaveInstanceState
zu verwenden, um den Status eines Fragments zu speichern, wenn die Registerkarte geändert wird, damit es in onCreateView
wiederhergestellt werden kann. Das Problem ist, onSaveInstanceState
wird nie aufgerufen. Die Fragment
's onDestroyView
und onCreateView
Methoden werden aufgerufen, aber die Bundle
, die an onCreateView
geliefert wird, bleibt null.Trennen eines Fragments, das onSaveInstanceState nicht auslöst()
Kann jemand mir bitte erklären, wenn onSaveInstanceState
tatsächlich aufgerufen wird, wie ich sicher, kann sie aufgerufen wird, wenn Tabs, oder die beste Praxis zum Speichern und Wiederherstellen des Zustands eines Fragment
schaltet, wenn er abgenommen und wieder angebracht?
Fragment:
@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
}
Aktivität:
/**
* 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);
}
}
Mögliche Kopie http://stackoverflow.com/questions/8503629/fragments-onsaveinstancestate-never-called – DeeV
was ist frEventLog? –