2

我是 Android 开发的新手,我玩的是一个运动型应用程序,其应用程序流程如下:联赛 -> 球队 -> 球员 -> 球员统计数据(这是在 ViewPager 中)。全部使用片段。

我有朝这个方向工作的流程,但我正在尝试使用主页按钮来导航回堆栈(后退按钮也可以)。我的问题是,通过流程前进,我传递了联盟的 ID,然后是团队,然后是球员等……但是当按下主页按钮时,这些数据不再可用。

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

我也尝试过覆盖 onSaveInstance 和 onActivityCreated,并将包中每个实体的 ID 放在那里,但即使我将包中的 ID 保存在 onSaveInstance 中,包在 onActivityCreated 中仍为空。

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

谢谢你的帮助。

4

2 回答 2

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);
}
于 2016-07-13T18:55:28.490 回答
0

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

于 2013-11-22T18:28:30.023 回答