gpt4 book ai didi

android - 协调嵌套导航 Controller 中的后退按钮所有权

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:52:55 26 4
gpt4 key购买 nike

我有一个显示应用程序一般信息的主屏幕,以及一个包含附加信息的底页。

如果用户单击抽屉导航菜单上的某些内容,选择一个新屏幕,主屏幕内容可能会发生变化。

主屏幕底部的工作表也可以随着用户点击更多数据而改变。

所以我基本上在底部工作表中有一个嵌套导航,它位于主屏幕的主导航中

我的问题是,在使用新的 Android 架构组件 Navigation Controller 时,有一个 app:defaultNavHost="true" 选项,它拦截了后退按钮。

后退按钮的这种自动拦截使我的用户案例非常复杂。我想要的是当用户在主屏幕时,底部表单控制后退按钮,当用户切换主屏幕时,主屏幕控制后退按钮。

有没有办法以编程方式控制 app:defaultNavHost,以便嵌套的 Navigation Controllers 可以共存并协调后退按钮所有权?

最佳答案

Navigation 1.0.0-alpha04 中的修复之一是 Navigation 自动将每个 Fragment 目的地设置为 primary navigation fragment ,这确保任何子 fragment 管理器(例如嵌套导航图使用的子 fragment 管理器)将自动接收到在外部 fragment 管理器之前按下的后退按钮。

这意味着如果您在另一个也使用 app:defaultNavHost="true" 的 NavHostFragment 中使用带有 app:defaultNavHost="true" 的 NavHostFragment,它开箱即用。如果您在 Navigation 创建的任何 fragment 中使用 getChildFragmentManager() 手动添加到返回堆栈的 fragment 事务,同样的事情也适用。

the original issue 中所述, app:defaultNavHost="true" 使用现有的 Fragment API,并且可以随时通过使用以下代码以编程方式更改:

// This effectively removes the app:defaultNavHost flag
getSupportFragmentManager().beginTransaction()
.setPrimaryNavigationFragment(null)
.commit()
// Pass in your NavHostFragment to re-enable the flag

关于android - 协调嵌套导航 Controller 中的后退按钮所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com