Android 我混淆了navigateUpTo()和使用Intent之间的导航

Android 我混淆了navigateUpTo()和使用Intent之间的导航,android,navigation,Android,Navigation,对不起我的愚蠢,我想问两个问题,但有相关的 我在谷歌上阅读了文档后: 有些事情我还是不明白 我想使用向上或(主页)按钮导航到一个级别的父屏幕: 代码a: Intent upIntent = new Intent(this, MyParentActivity.class); NavUtils.navigateUpTo(this, upIntent); return true; 代码b: Intent parentActivityIntent = new Intent(this, MyParent

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

我在谷歌上阅读了文档后: 有些事情我还是不明白

我想使用向上或(主页)按钮导航到一个级别的父屏幕:

代码a:

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;
这两个代码都放置在OnOptions ItemSelected(MenuItem项)事件处理程序中

这有什么区别

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

在用户完成表单屏幕后,我想直接将屏幕导航到报告屏幕,但不希望菜单屏幕显示一点点秒,因为通过它的路线

这是一个横向导航的例子,但我不确定


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

这两个代码段之间的区别在于标志定义的行为

从:

标记活动清除顶部:
如果已设置,则正在启动的活动为 已在当前任务中运行,而不是启动新任务 该活动的实例,以及它上面的所有其他活动 将关闭,并将此意图交付给(现在位于顶部) 旧的活动作为新的意图

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

NavUtils是一个包装器,旨在使home按钮的实现更加容易,与人们对不同版本Android的期望一致。如果您查看源代码,在pre-jellybean设备上,它将使用FLAG\u ACTIVITY\u CLEAR\u TOP标志,而不是FLAG\u ACTIVITY\u NEW\u TASK标志。在Jellybean设备上,它不使用这两个标志


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

谢谢Alexander。对于我的第二个问题,我不希望用户按“后退”按钮(在设备上)导航回表单活动。我只想让用户回到菜单活动。我该怎么做呢?在表单活动中,在调用startActivity(ReportActivity.class)之后立即调用finish(),我明白了。所以我的第一个问题。如果我希望应用程序可以在API 8到API 13上运行,那么我应该使用哪种方法来进行向上导航?对于主/向上图标行为,一定要使用NavUtils。但是,由于ActionBar(以及home/up图标)在API 11之前不存在,所以home/up图标在API 8、9或10设备上不存在。我使用的是Sherlock库,使用Intent.addFlags的方式似乎很好。我只是担心一些问题,如果这不是一个最适合的情况下的方法。