【问题标题】:Android Navigation back button dispatcher wierd behaviourAndroid导航返回按钮调度程序奇怪的行为
【发布时间】:2020-04-23 16:30:25
【问题描述】:

我正在使用导航组件并试图只听片段中的后退按钮;在收听之前,一切正常,这意味着工具栏按钮和本机后退按钮都可以按预期导航到上一个片段。

所以,为了添加一个监听器,我遵循了这个:https://developer.android.com/guide/navigation/navigation-custom-back 并在我的片段中添加了一个回调,如下所示:

override fun onCreate(savedInstanceBundle: Bundle?){
    // saveIfNew when back button is pressed
    requireActivity().onBackPressedDispatcher.addCallback(this){
        viewModel.checkAndSave()
    }
}

完成此操作后,本机后退按钮不再起作用,但工具栏后退按预期工作。该页面上的文档似乎使它看起来只是一个侦听器,不应该影响导航链,那么我在这里做错了什么??

【问题讨论】:

    标签: android android-fragments android-architecture-navigation android-navigation android-navigation-graph


    【解决方案1】:

    当您不再需要 OnBackPressedCallback 拦截后退按钮时,您想禁用它。为此,请使用setEnabled(boolean) 方法。您也可以通过调用remove() 来完全删除您的回调。

    另外,如果你只是想保存并退出当前片段,你可以在handleOnBackPressed方法中使用findNavController().navigateUp()

    override fun onCreate(savedInstanceBundle: Bundle?){
        // saveIfNew when back button is pressed
        requireActivity().onBackPressedDispatcher.addCallback(this){
            viewModel.checkAndSave()
            findNavController().navigateUp()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多