从我对 Gmail 和 TED 应用程序的观察来看,向上导航的行为将导航到具有相同状态(滚动位置)的父级,这与谷歌在他们的文档实施向上导航中所说的不同,就像创建父级意图并启动它一样。
我从 Android 示例代码中实现了代码,所有状态都消失了(我之前设置的所有额外参数和滚动位置)。什么是正确的方法?我在 Android 文档上找不到任何内容。
下面是代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, MyParentActivity.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is not part of the application's task, so create a new task
// with a synthesized back stack.
TaskStackBuilder.from(this)
.addNextIntent(new Intent(this, MyGreatGrandParentActivity.class))
.addNextIntent(new Intent(this, MyGrandParentActivity.class))
.addNextIntent(upIntent)
.startActivities();
finish();
} else {
// This activity is part of the application's task, so simply
// navigate up to the hierarchical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
return super.onOptionsItemSelected(item);
}
在我的情况下,我有 3 个活动说 AB 和 C,当用户从 A 导航到 BI 时放置了一些额外内容,onCreate
而 BI 使用这些额外内容从数据库查询数据以填充我的行,当我从 C 导航回来时,所有额外内容都消失了,活动B 什么都不显示。