gpt4 book ai didi

使用新导航组件处理 Android onBackPressed

转载 作者:IT老高 更新时间:2023-10-28 13:33:22 26 4
gpt4 key购买 nike

我需要一些建议;

我正在试验导航库。我有一个有 webView 的 fragment 。我想检查它是否canGoBack,如果可以就这样做,否则不干涉。

1.接口(interface)方法:由于 Navigation 正在处理事务,因此我不再手动创建 fragment 的实例,我可以将其分配为 Activity 中的监听器。

1.重点聆听:我真的觉得它看起来很难看,我不认为这是一个通用的解决方案,所以我跳过了这个。

我需要一些关于如何使用 Navigation 库来完成的意见。当您尝试从 navController 获取 currentDestination 时,它是 NavigationDestination 对象,它提供有关当前 fragment 的信息,例如 xml 中给出的标签。

当我检查 fragmentManager 时,我看到 backStack 是空的,并且 fragment 事务发生在没有标记的情况下。

恕我直言,它不适合库的概念来执行 findFragment 类操作以与当前 fragment 进行某种交互,但我目前似乎无法找到解决方法.有什么建议吗?

最佳答案

我找到了一种像以前一样使用接口(interface)或基 fragment 类的方法。

在 Activity 中:

override fun onBackPressed() {
val f = currentFragment
if (f !is BaseFragment || f.onBackPressed()) {
if (!findNavController(R.id.nav_host_fragment).navigateUp()) {
super.onBackPressed()
}
}
}

val currentFragment: Fragment?
get() = nav_host_fragment.childFragmentManager.findFragmentById(R.id.nav_host_fragment)

在 BaseFragment 中:

open fun onBackPressed() = true /*or false if you want to prevent navigation*/

关于使用新导航组件处理 Android onBackPressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50393833/

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