【问题标题】:I made confuse about Navigation between navigateUpTo() and using Intent我对 NavigationUpTo() 和使用 Intent 之间的导航感到困惑
【发布时间】:2012-12-19 05:16:14
【问题描述】:

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

我在 Google 中阅读文档后: http://developer.android.com/training/implementing-navigation/ancestral.html 还是有些不明白。

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

代码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;

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

这有什么区别?

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

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

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

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

【问题讨论】:

    标签: android navigation


    【解决方案1】:

    两个 sn-ps 的区别在于标志定义的行为。

    来自documentation

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

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

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

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

    【讨论】:

    • 谢谢亚历山大。对于我的第二个问题,我不希望用户按返回按钮(在设备上)导航回表单活动。我只想让用户回到菜单活动。我该怎么做?
    • 在Form Activity中,在调用startActivity(ReportActivity.class)之后立即调用finish()。
    • 我明白了。所以对于我的第一个问题。如果我希望应用可以在 API 8 到 API 13 上运行,我应该使用哪种方法进行向上导航?
    • 绝对将 NavUtils 用于主页/向上图标行为。但是,由于 ActionBar(和那个 home/up 图标)直到 API 11 才存在,所以这个 home/up 图标不会在 API 8,9 或 10 设备上存在。
    • 我正在使用 Sherlock 库,使用 Intent.addFlags 的方式似乎很好。如果它不是最适合该方法的情况,我只是担心一些问题。
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2021-09-05
    • 2023-03-09
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多