我是Android开发的新手,我玩的是一款体育类应用,其应用流程如下:联盟 - >团队 - >播放器 - >玩家统计(这是在ViewPager中)。全部使用碎片。
我有这个方向的流程,但我正在尝试使用主页按钮导航堆栈(后退按钮也可以)。我的问题是,通过流程我会传递联盟的ID,然后是Team,然后是Player等......但是当按下主页按钮时,这些数据将不再可用。
我已经尝试将retainInstance设置为true,但是没有这样做。不知道为什么,但每当我按回或主页按钮时,onCreate中的ID字段都为空。
我也尝试重写onSaveInstance和onActivityCreated,然后在包中为每个实体添加ID,但即使我在onSaveInstance中保存包中的ID,onActivityCreated中的包也是null。
当用户点击后面或主页按钮时,如何保留每个实体的ID?
感谢您的帮助。
答案 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()中恢复。