根据我对 Gmail 和 TED 应用程序的观察,向上导航的行为它将导航到具有相同状态(滚动位置)的父项,这与 Google 在其文档中所说的不同实施向上导航 http://developer.android.com/training/implementing-navigation/ancestral.html这就像创建一个父意图并启动它。
我实现了 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 个活动,比如 A B 和 C,当用户从 A 导航到 B 时,我添加了一些额外的内容onCreate
我使用 B 的附加项从数据库查询数据来填充我的行,当我从 C 导航回来时,所有附加项都消失了,活动 B 没有显示任何内容。
Android Activity 的“标准”行为是,每次该 Activity 有新意图时,都会创建该 Activity 的新实例(请参阅 launchMode-docuhere http://developer.android.com/guide/topics/manifest/activity-element.html#lmode)。因此,如果您调用navigateUpTo,您的额外内容似乎消失了。
对于你的情况,我建议使用
android:launchMode="singleTop"
对于 AndroidManifest.xml 中的父活动。这样您将返回到现有的活动(只要它位于任务的返回堆栈的顶部)。这样您的额外内容将被保留。
我也不明白为什么您引用的 Google 文档中没有提到这一点,因为这似乎是使用向上导航时所期望的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)