如何导航回Android Wear中的特定活动

时间:2016-12-03 18:33:47

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

Android Wear中的导航注意事项

在Android Wear中,从左向右滑动屏幕会使您返回上一个活动。我注意到,如果一个活动有碎片并且你做了那个动作,那么无论你在活动中有多少碎片,你都会返回上一个活动。

问题

我希望能够执行以下导航,如图所示:

navigation diagram

  • 我的主要活动是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并添加逻辑来做我想要的事情,但是,在代码和实现方面,我认为它可能会变得非常快,特别是如果我想在将来更改它。我必须以编程方式显示页面并禁用滑动以在viewpager中导航,以便不让用户前进(因为我希望用户仅通过按下每个屏幕中的“继续”按钮来导航)。此外,当到达D时,我将不得不删除B和C,以便当用户翻动时,他会回到A.正如我所说,代码会变得非常快。

摘要

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

1 个答案:

答案 0 :(得分:0)

尝试创建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