我遵循单一 Activity 方法。我有导航工具栏,每当我转到其他屏幕( fragment )而不是汉堡包图标时,我都会有后退箭头。
我想要实现的是,使用按下工具栏后退箭头的操作弹出我当前的 fragment 。
我试过了
requireActivity().getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
NavHostFragment.findNavController(EventDetailsFragment.this)
.navigate(R.id.action_nav_event_details_to_nav_home);
}
});
但没有接到那边的电话,我通过在 Debug模式下运行应用程序进行了检查。
最佳答案
在 Activity
oncreate 中:
navController = findNavController(R.id.my_nav_host)
//my_nav_host defined in activity xml file as id of fragment or FragmentContainerView
val appBarConfiguration = AppBarConfiguration(navController.graph)
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration)
和:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
onBackPressed()
return true
}
return true
}
然后在你的 fragment 中:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callback: OnBackPressedCallback =
object : OnBackPressedCallback(true /* enabled by default */) {
override fun handleOnBackPressed() {
//do what you want here
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
关于android - 使用导航组件处理工具栏后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58516720/