首页 > 解决方案 > 如何使用Android中的导航控制器制作自定义后退按钮以返回某个目的地?

问题描述

我需要进行自定义行为,当用户按下后退按钮时,用户将以编程方式转到某个目的地。我实际上已经在 Android 导航组件中阅读了这个处理后退按钮

但我不明白如何使用那个自定义后退按钮代码。这对我来说似乎很奇怪。

我尝试使用下面的代码

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        fragmentView = inflater.inflate(R.layout.fragment_search_setting, container, false)

        // set custom back button
        val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {

            // navigate to certain destination
            Navigation.findNavController(fragmentView).popBackStack(R.id.destination_create_event, false)


        }


        return fragmentView
    }

但我得到这样的类型不匹配错误 在此处输入图像描述

标签: androidkotlinandroid-architecture-componentsandroid-jetpackandroid-architecture-navigation

解决方案


您必须创建 OnBackPressedCallback 抽象类的新实例并实现其抽象方法。

我希望这可以帮助你:

        val callback = requireActivity().onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true){
        override fun handleOnBackPressed() {
                        Navigation.findNavController(fragmentView).popBackStack(R.id.destination_create_event, false)
        }


    })

    // The callback can be enabled or disabled here or in the lambda

}

推荐阅读