xPe*_*eep 10 android android-architecture-components android-architecture-navigation
当我从深层链接(用户点击 URL)打开应用程序并按下后退按钮时,我希望用户导航到我的导航图中的上一个片段,但它只是退出应用程序。
文档说后退导航的工作方式应该与用户自然到达该屏幕的方式相同。
我可以在我的导航图中以某种方式指定所需的 backstack 吗?或者可以在deeplink后自动形成backstack?对于旧版本的库,我发现回按后它应该导航到我的导航图的根目录,但这并没有发生。
我正在使用 Android 架构组件(版本 1.0.0-beta01)中的导航库。
我发现这里发生了什么,因为explicit deep links它应该转到一个新的返回堆栈,如果用户自然导航到视图而不是现有的返回堆栈(现有堆栈被清除),您的应用程序将拥有该堆栈。
当用户通过显式深层链接打开您的应用程序时,任务返回堆栈将被清除并替换为深层链接目标。嵌套图形时,每一级嵌套的起始目的地——即层次结构中每个元素的起始目的地——也被添加到堆栈中。这意味着当用户从深层链接目的地按下后退按钮时,他们会返回导航堆栈,就像他们从入口点进入您的应用程序一样。
因为implicit它有点奇怪。你可以让它做什么explicit,但设置Intent.FLAG_ACTIVITY_NEW_TASK否则back button和navigation up按钮做两件单独的事情:
该back button会按照你所期望的,它会回到你的应用的现有背部栈并加载片段。
该up button然而,将clear在一back stack,使一个新的,就好像它是一个explicit link。
如果未设置该标志,您将保留在触发隐式深层链接的前一个应用程序的任务堆栈上。在这种情况下,“后退”按钮将带您返回上一个应用程序,而“向上”按钮则在导航图内的分层父目标上启动您的应用程序任务。kquote
来源:Android 文档
guy*_*guy -1
正如这里所描述的,后退按钮应该返回到上一个片段,您可以在 Java 中手动设置它,如下所示:button.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_fragment, null));
在 Kotlin 中是这样的:button.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_fragment, null))
Android 系统维护一个包含最后访问的目的地的返回堆栈。当用户打开应用程序时,应用程序的第一个目标将放置在堆栈中。每次调用 navigator() 方法都会将另一个目的地放在堆栈顶部。相反,按“向上”或“后退”按钮将分别调用 NavController.navigateUp() 和 NavController.popBackStack() 方法,以将顶部目标从堆栈中弹出。
确保您正在使用NavHostFragment而不是<fragment>在托管片段活动中。
| 归档时间: |
|
| 查看次数: |
3681 次 |
| 最近记录: |