【问题标题】:OnCreate bundle is null despite calling onSaveInstanceState尽管调用了 onSaveInstanceState,但 OnCreate 包为空
【发布时间】:2013-04-24 12:17:56
【问题描述】:

在按下 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");

}

【问题讨论】:

  • onRestoreInstanceState(bundle) 和 onSaveInstanceState(bundle) 用于在活动方向更改期间保存状态。使用共享偏好会帮助您解决问题。
  • 所以在主页按下后在 onSaveInstanceState 调用中创建的包不是以下 onCreate 读取的包?
  • 您的期望是正确的,但是有一些事情会影响这种行为。您是否在清单中的 Activity 上或启动时设置了任何标志?另外,发布您的 menuDrawer.saveState()onCreate() 方法。
  • 用 onCreate 修改帖子并删除 outState.putParcelable(STATE_MENUDRAWER, menuDrawer.saveState());因为它是有影响的
  • @Raghunandan 请你帮我解决这个问题stackoverflow.com/questions/20903545/…

标签: android bundle android-lifecycle


【解决方案1】:

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

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

【讨论】:

  • 那么怎么可能按下主页按钮并按下应用程序图标我会看到 on create 的调用?
  • @brescia123 这不应该发生,这意味着你做错了什么。也许,在 onPause 中?
  • 另外需要注意的是,如果你正确使用Fragment,当savedInstanceState不为null时,你应该不需要事务来恢复Fragment。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2023-03-15
    • 2013-08-19
    相关资源
    最近更新 更多