我对上行导航使用推荐的方法,我的代码如下所示:
@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);
}
}