尽管调用onSaveInstanceState,OnCreate bundle仍为null

时间:2013-04-23 14:34:05

标签: android bundle android-lifecycle

在按下主页并重新打开应用程序后,我正在尝试恢复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");

}

2 个答案:

答案 0 :(得分:1)

按下主页按钮时

onSaveInstanceState 被调用,但除非活动被销毁(配置更改或内存原因),否则不会再次调用onCreate

您应该能够保留成员变量,以便处理onPause / onResume(这是我们实际讨论的内容)。如果你没有看到你期望的片段(从Home press返回后),你会有另外一个问题。

答案 1 :(得分:-1)

你必须在onPause()方法中完成所有的保存工作,最好使用sharedPreferences,如Raghunandan所说。