如何使用Android中的导航控制器制作自定义后退按钮以返回某个目的地?
Posted
技术标签:
【中文标题】如何使用Android中的导航控制器制作自定义后退按钮以返回某个目的地?【英文标题】:how to make custom back button to go back to certain destination using navigation controller in Android? 【发布时间】:2020-02-03 23:04:39 【问题描述】:我需要进行自定义行为,当用户按下后退按钮时,用户将以编程方式转到某个目的地。我实际上已经阅读了这个Handling back button in android Navigation Component
但我不明白如何使用自定义后退按钮代码。我觉得这很奇怪。
我已经尝试使用下面的代码
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
但我收到这样的类型不匹配错误
【问题讨论】:
【参考方案1】:您必须创建 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
【讨论】:
这不是 OP 所要求的。 OPs 代码很好;我认为它使用了错误的导入。 @ahooee 我试过你的解决方案,但我有这样的错误i.stack.imgur.com/imLjY.png @Alexa289 只需在'return fragmentView'语句之前添加结束的addCallback函数括号即可。见截图:ScreenShot以上是关于如何使用Android中的导航控制器制作自定义后退按钮以返回某个目的地?的主要内容,如果未能解决你的问题,请参考以下文章