私の Android アプリケーションには、特定の を占めるActionBar
が変更されています。タブが変更されたときにフラグメントの状態を保存して、で回復できるようにしようとしています。Fragment
FrameLayout
onSaveInstanceState
onCreateView
問題は、onSaveInstanceState
決して呼び出されないことです。とメソッドが呼び出されますが、Fragment
指定された toは null のままです。onDestroyView
onCreateView
Bundle
onCreateView
onSaveInstanceState
が実際に呼び出されたとき、タブを切り替えたときに確実に呼び出されるようにする方法、または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
}
アクティビティ:
/**
* 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);
}
}