【问题标题】:How to navigate back to a specific activity in Android Wear如何导航回 Android Wear 中的特定活动
【发布时间】:2016-12-03 18:33:47
【问题描述】:

Android Wear 中的导航注意事项

在 Android Wear 中,从左向右滑动屏幕可让您返回上一个活动。我注意到,如果一个活动有片段并且你做了那个手势,你会返回到前一个活动,不管你在活动中有多少片段。

问题

我希望能够执行图表中描述的以下导航:

  • 我的主要活动是A;
  • 如果我在 B 中滑动,我会转到 A;
  • 如果我在 C 中滑动,我 去B;
  • 但是,如果我在 D 中滑动,我会返回到 A。

这就是我希望的导航方式,但我无法以令人满意的方式做到这一点。

尝试

  • 其中一种方法是在进入 D 之前完成活动 C。但是,它有点令人困惑,因为在滑动之后,活动 B 会短暂出现在活动 D 之前(这是有道理的,因为完成 C 之间存在延迟并启动 D,使 B 出现在背景中)
  • 另一个尝试是从 B 和 C 中清除活动堆栈(使用 Intent 中的标志。但是,问题还在于,在刷 D 时,C 会在后台短暂出现,并且仅在我刷完后才消失,显示A. 这也可能使用户感到困惑,因为他会在到达 A 之前短暂地看到 C。
  • 我也尝试过使用片段,但我意识到我在一个活动中放入多少个片段并不重要,滑动它会导致活动完成。这可以很好地从 D 转到 A,但问题是当我在 C 中时,我必须能够返回到 B。因此,用三个片段(B、C 和 D)膨胀单个活动由于那个细节,效果不会那么好。
  • 我还考虑过使用带有片段的视图分页器并添加逻辑来做我想做的事,但是,在代码和实现方面,我认为它可能会很快变得丑陋,特别是如果我想在将来更改它。我必须以编程方式显示页面并禁用滑动以在 viewpager 内导航,以免让用户继续浏览(因为我希望用户只通过在每个屏幕上按“继续”按钮来导航)。另外,当到达 D 时,我必须删除 B 和 C,这样当用户滑动时,他会回到 A。正如我所说,代码会很快变得丑陋。

总结

考虑到所有这些,我想要的是能够通过滑动从 C 转到 B,当到达 D 时,滑动会将用户返回到 A,而不会在后台意外显示 B 或 C。我希望用户真正感觉到他正在从 D 转到 A,而不会觉得 B 或 C 在背景中短暂出现很奇怪

【问题讨论】:

    标签: android android-fragments android-activity wear-os android-navigation


    【解决方案1】:

    尝试将 A 创建为新意图并清除返回堆栈,如下所示:

    Intent intent = new Intent(this, A.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent);
    finish(); // call this to finish the current activity
    

    【讨论】:

    • 这个问题正如我所描述的那样。使用您的代码,假设我在 C 中并转到 D。当我这样做时,C 在 D 出现之前就消失了。因此,由于 B 是 C 的先前活动,因此它在 D 开始之前简要地出现。我想避免这种影响。如果我只能在 D 开始后完成 C 并出现在屏幕上,它会起作用
    • 当你想回到A时,这个代码应该只在D中调用。
    • 我现在在检测 fling 时遇到问题。我尝试了很多方法,但它没有检测到我何时刷卡。当我解决这个问题时,我会告诉你这是否有效
    • GestureDetector可以检测fling,试试看
    • 我尝试了很多方法,但它根本不起作用。它甚至从不调用onFling。我一直在尝试很多方法,但没有一个有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多