0

对不起我的愚蠢,我想问两个问题,但有相关的。

在谷歌阅读文档后:http: //developer.android.com/training/implementing-navigation/ancestral.html 我仍然不明白一些东西。

我想处理向上或(主页)按钮导航到一级父屏幕:

代码一:

Intent upIntent = new Intent(this, MyParentActivity.class);
NavUtils.navigateUpTo(this, upIntent);
return true;

和代码b:

Intent parentActivityIntent = new Intent(this, MyParentActivity.class);
parentActivityIntent.addFlags(
        Intent.FLAG_ACTIVITY_CLEAR_TOP |
        Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
return true;

两个代码都放在 onOptionsItemSelected(MenuItem item) 事件处理程序中。

这有什么区别?

我的第二个问题是,实际上我想在以下情况下导航:a)我有一个菜单屏幕,假设它是一个主屏幕。b) 菜单屏幕可以导航到表单屏幕以从用户那里获取信息。c) 菜单屏幕也可以导航到报告屏幕向用户显示报告。

用户完成表单屏幕后,我想直接将屏幕导航到报告屏幕,但不希望菜单屏幕因为经过它而显示一点点。

这有点像横向导航的情况,但我不确定。

希望有人帮忙。非常感谢你。

4

1 回答 1

0

两个片段之间的区别在于标志定义的行为。

文档中:

FLAG_ACTIVITY_CLEAR_TOP:
如果设置,并且正在启动的 Activity 已经在当前任务中运行,那么不会启动该 Activity 的新实例,而是关闭它上面的所有其他 Activity,并且此 Intent 将被传递到(现在在顶部)作为新意图的旧活动。

FLAG_ACTIVITY_NEW_TASK
如果设置,此活动将成为此历史堆栈上新任务的开始。

NavUtils 是一个包装器,旨在以符合人们对不同版本 Android 的期望的方式更轻松地实现主页按钮。如果您查看源代码,在 pre-jellybean 设备上它将使用 FLAG_ACTIVITY_CLEAR_TOP 标志,而不是FLAG_ACTIVITY_NEW_TASK 标志。在 Jellybean 设备上,它不使用任何一个标志。

对于您的第二个问题(直接从表单到报表活动),当用户在表单活动中完成表单时,创建报表活动的意图并调用 startActivity。没有理由回到家庭活动。

于 2012-12-18T21:16:14.263 回答