【发布时间】:2021-04-05 00:41:48
【问题描述】:
我有片段 X、A、B,我正在使用导航架构组件在它们之间导航。
片段 A,B 特定,但片段 X 可以是任何(C,D,...);
底部导航中的片段 A 和 B 及其“导航图标”始终在屏幕上,这意味着用户可以随时从任何片段(包括 A 和 B)转到 A 或 B:
X -> A -> B
X -> B -> A
A -> B -> X
A -> B -> A
//another ways
我对这个案子的问题:
X -> A -> B -> A -> B -> ?
如果用户从X开始,到达?并按“返回”按钮开始返回,他会多次抛出A,B:
用户回击:
? -> B -> A -> B -> A -> X
但我想从 backstack 中“排除”片段,如果它们已经在它上面:
? -> A -> B -> X
如果用户导航:
X -> A -> B -> A
我想看看:
A -> B -> X
不是:
A -> B -> A -> X
我正在尝试使用 Pop To 来实现,但它只能以一个具体的片段返回给我。我需要返回我开始的 X 片段,而不是硬编码。包容和单顶不是它。
我不确定我是否可以使用基本的导航组件来做到这一点,所以我需要你的建议。如果我做不到,我应该使用什么方法?有什么好的做法吗?
UPD:
我正在使用全局点在片段之间导航。我的导航是这样的:
右|下链是X,我可以使用底部导航从其中任何一个导航到未修改的片段。它是Single Activity 应用程序,我正在使用以下导航:
//Using global points
findNavController(R.id.host).navigate(R.id.toLibrary)
【问题讨论】:
-
你得到答案了吗?或者我帮你。
-
不,我不是。如果您能提供帮助,那就太好了。
-
当然。但是让我仔细阅读你的问题。不用担心
标签: android android-architecture-components android-architecture-navigation