我使用的是 向上导航的推荐方法,我的代码如下:
@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);
}
}
以下是用例:
问题是在我点击 UP 之后,MainActivity 会再次点击它的 onCreate ()方法,并且丢失所有的状态,而不是像从 ShowDetailsActivity 调用“ Finish ()”那样从典型的 onResume ()开始。为什么?这是它一直以来的工作方式吗? 这是 Android 使用“ Up”导航方法重新创建所有导航到的活动的预期行为吗?如果我按下后退按钮,我就得到了简历生命周期所期望的结果。
如果没有合适的安卓系统,这就是我的解决方案:
@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);
}
}