android - 如何使用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
}
解决方案
您必须创建 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
}
推荐阅读
- django - django如何在查询过滤器中使用变量
- java - 为什么 getFrameAtIndex 比 getFrameAtTime() 快
- c# - C#SMTP Office365 - 操作已超时
- java - 无法打印数组
- android - Wear OS - 如何在设备重启时自动启动应用程序
- django - Django:保存时管理页面重定向但在新选项卡中
- python - Python:使用变量名命名文件夹和文件
- windows - 事件 0,ScreenConnectClient (703c90ac61f84ee1)
- testing - rails-admin 贡献:运行测试(缺少 gem)
- c++ - 如何更改 Google Benchmark 'Range()' 函数的增量、步长或比例