我正在使用推荐的向上导航方法,我的代码如下所示:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent h = new Intent(ShowDetailsActivity.this, MainActivity.class);
h.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(h);
return true;
default: return super.onOptionsItemSelected(item);
}
}
这是用例:
- 我启动我的应用程序“MainActivity”
- 我单击一个按钮转到“ShowDetailsActivity”
- 我点击 UP ActionBar 导航
问题是在我单击 UP 后,MainActivity 再次访问其 onCreate() 方法并丢失所有状态,而不是像我刚刚从 ShowDetailsActivity 调用“finish()”那样从典型的 onResume() 开始。为什么?这是它总是如何工作的吗?这是 Android 重新创建使用“向上”导航方法导航到的所有活动的预期行为?如果我点击后退按钮,我会得到预期的 onResume 生命周期。
如果不存在 Android“正确”的解决方案,这是我的解决方案:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, MainActivity.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
NavUtils.navigateUpTo(this, upIntent);
finish();
} else {
finish();
}
return true;
default: return super.onOptionsItemSelected(item);
}
}