使用navigateUpFromSameTask时savedInstanceState为null

时间:2013-11-01 22:53:41

标签: android android-fragments

我是Android开发的新手,我玩的是一款体育类应用,其应用流程如下:联盟 - >团队 - >播放器 - >玩家统计(这是在ViewPager中)。全部使用碎片。

我有这个方向的流程,但我正在尝试使用主页按钮导航堆栈(后退按钮也可以)。我的问题是,通过流程我会传递联盟的ID,然后是Team,然后是Player等......但是当按下主页按钮时,这些数据将不再可用。

我已经尝试将retainInstance设置为true,但是没有这样做。不知道为什么,但每当我按回或主页按钮时,onCreate中的ID字段都为空。

我也尝试重写onSaveInstance和onActivityCreated,然后在包中为每个实体添加ID,但即使我在onSaveInstance中保存包中的ID,onActivityCreated中的包也是null。

当用户点击后面或主页按钮时,如何保留每个实体的ID?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

添加“设置活动”时出现类似问题。 我不得不修改自动创建的onMenuItemSelected。

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        if (!super.onMenuItemSelected(featureId, item)) {
            // I removed this line
            //NavUtils.navigateUpFromSameTask(this);
            // and add this 3 lines
            Intent intent = NavUtils.getParentActivityIntent(this);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            NavUtils.navigateUpTo(this, intent);
        }
        return true;
    }
    return super.onMenuItemSelected(featureId, item);
}

答案 1 :(得分:0)

navigateUpFromSameTask()不仅设置了FLAG_ACTIVITY_CLEAR_TOP标志。它还清除savedInstanceState。 我通过在SharedPreferences中存储saveInstanceState中正常的值来解决这个问题。将它们存储在onPause()中并在onResume()中恢复。