在按下主页并重新打开应用程序后,我正在尝试恢复Activity
的先前状态,因此我在onSaveInstanceState
内保存了我需要的内容:
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(STATE_ACTIVE_VIEW_ID, mActiveViewId);
Log.v(TAG, this.toString() + " onSaveInstanceState");
}
被调用,但在onCreate
内,Bundle
始终为null
。
这是OnCreate():
@Override
public void onCreate(Bundle inState) {
super.onCreate(inState);
setContentView(R.layout.main);
setMenuDrawer();
if (inState != null) {
int activeViewID = inState.getInt(STATE_ACTIVE_VIEW_ID);
View activeView = findViewById(activeViewID);
menuDrawer.setActiveView(activeView);
switchSelectedFragment(activeView);
Log.v(TAG, this.toString() + " onCreate " + inState.toString());
} else {
switchSelectedFragment(findViewById(R.id.homeView));
}
Log.v(TAG, this.toString() + " onCreate");
}
答案 0 :(得分:1)
onSaveInstanceState
被调用,但除非活动被销毁(配置更改或内存原因),否则不会再次调用onCreate
。
您应该能够保留成员变量,以便处理onPause
/ onResume
(这是我们实际讨论的内容)。如果你没有看到你期望的片段(从Home press返回后),你会有另外一个问题。
答案 1 :(得分:-1)
你必须在onPause()方法中完成所有的保存工作,最好使用sharedPreferences,如Raghunandan所说。