1

在按下 home 并重新打开应用程序后,我正在尝试恢复我以前的状态,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");

}
4

2 回答 2

1

onSaveInstanceState 按下主页按钮时调用,但除非onCreateActivity 被销毁(配置更改或内存原因),否则不会再次调用。

您应该能够简单地保留成员变量,以处理onPause/ onResume(这是我们实际讨论的内容)。如果您没有看到您期望的 Fragment(从 Home press 返回后),那么您遇到了不同的问题。

于 2013-04-24T04:17:56.617 回答
-1

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

于 2013-04-23T17:32:40.220 回答