当前位置: 首页 > 知识库问答 >
问题:

通过导航架构组件进行深度链接后返回导航

宇文鸿畴
2023-03-14

当我从deeplink(用户点击URL)打开应用程序并按下后退按钮时,我希望用户导航到我导航图中的前一个片段,但它只是退出应用程序。

文件中说,反向导航的工作方式应该与用户自然到达屏幕的方式相同。

我可以在导航图中指定所需的backbackback吗?或者可以在deeplink后自动形成Backback?对于旧版本的库,我发现在按back press键后,它应该导航到导航图的根目录,但事实并非如此。

我正在使用Android架构组件(版本1.0.0-beta01)中的导航库。

共有2个答案

逑彬炳
2023-03-14

正如这里所描述的,back按钮应该返回到前面的片段,您可以在Java中手动设置它,如下所示:按钮。setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_fragment,null))

在Kotlin中是这样的:按钮。setOnClickListener(Navigation.createNavigationClickListener(R.id.next_fragment,null))

Android系统维护一个包含最后访问目的地的后台堆栈。当用户打开应用程序时,应用程序的第一个目标将放置在堆栈上。对navigate()方法的每次调用都会在堆栈顶部放置另一个目标。反过来,按下导航按钮,控制器将返回。navigateUp()和NavController。分别使用popBackStack()方法从堆栈中弹出顶部目标。

确保您使用的是NavHostFraank而不是

景麒
2023-03-14

我发现这里发生了什么,对于显式深度链接它应该转到一个新的后台堆栈,如果用户自然导航到视图,而不是现有的后台堆栈(现有堆栈已清除),应用程序将拥有新的后台堆栈。

当用户通过显式深度链接打开应用程序时,任务后台堆栈将被清除并替换为深度链接目标。嵌套图形时,每个嵌套级别的起始目标(即层次结构中每个元素的起始目标)也会添加到堆栈中。这意味着,当用户从深度链接目的地按下“后退”按钮时,他们会在导航堆栈中导航,就像他们从其入口点进入你的应用一样。

对于implicit来说,这有点奇怪。你可以让它做明确的所做的事情,但要设置意图。标记活动新任务否则,后退按钮向上导航按钮分别执行两项任务:

>

但是,向上按钮清除后堆栈,并创建一个新的堆栈,就像它是一个显式链接

如果未设置该标志,您将保留在触发隐式深度链接的前一个应用程序的任务堆栈上。在这种情况下,后退按钮会将您带回上一个应用程序,而向上按钮会在导航图中的分层父目的地上启动应用程序的任务。kquote

来源:Android文档

 类似资料:
  • 我一直在遵循导航架构组件中的文档,以了解这个新的导航系统是如何工作的。 要从一个屏幕到另一个屏幕进行/返回,您需要一个实现接口的组件。 NavHost是一个空视图,当用户在应用程序中导航时,目的地会随之交换。 但是,似乎目前只有片段实现了< code>NavHost 导航架构组件的默认NavHost实现是NavHostFragment。 所以,我的问题是: > < li> 即使我有一个可以用< c

  • 我不知道如何使用新的导航架构组件,从我的主屏幕(带有连接到底部应用程序栏的浮动操作按钮)导航到没有应用程序栏的另一个屏幕。 当我点击晶圆厂时,我想要我的下一个屏幕(片段?)从右侧滑入。问题是我应该把我的

  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • 这一次,我需要你的帮助关于使用Android导航组件与深度链接。 我一直在关注这个文档,fragment和deeplink之间的连接工作正常。 这个问题是关于接收深度链接的活动的。在我的例子中,我设置了android: LaunchMode="单项任务" 通过这种配置,我注意到了一些奇怪的行为: WelcomeActivity每次单击deeplink都会收到两次onNewIntent呼叫。有时甚至

  • 我目前正在学习新的Android导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/). 我有点混淆了它的动机和概念,以下是我的不确定性: Android导航架构组件是否旨在消除在单个应用程序中使用多个活动的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面都将是片段? 在应用程序中使

  • 是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。