Mel*_*Mel 13 android android-fragments kotlin android-architecture-components android-architecture-navigation
我需要一些建议;
我正在试验导航库.我有一个有webView的片段.我想检查它canGoBack是否可以这样做,否则不会干扰.
1.接口方法:由于Navigation正在处理事务,我不再手动创建片段的实例,我可以将其指定为活动中的监听器.
1.重点聆听:我认为它看起来很难看,我不认为这是一个通用的解决方案,所以我跳过这个.
关于如何使用导航库,我需要一些意见.当你试图从中获取currentDestination时navController,它的NavigationDestination对象提供有关当前片段的信息,例如xml中给出的标签.
当我检查时fragmentManager,我发现它backStack是空的并且片段事务发生时没有标记.
恕我直言,它不适合库的概念来进行findFragment某种操作以与当前片段进行某种程度的交互,但我现在似乎无法通过它找到方法.有什么建议 ?
我找到了一种方法,像以前一样使用接口或基本片段类.
在活动中:
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)
Run Code Online (Sandbox Code Playgroud)
在BaseFragment中:
open fun onBackPressed() = true /*or false if you want to prevent navigation*/
Run Code Online (Sandbox Code Playgroud)
小智 5
我们可以直接处理任何片段的 OnBackPressed
requireActivity().onBackPressedDispatcher
.addCallback(viewLifecycleOwner, object: OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
//Handle back event from any fragment
}
})
Run Code Online (Sandbox Code Playgroud)
将以上代码放入onViewCreated中
| 归档时间: |
|
| 查看次数: |
2948 次 |
| 最近记录: |