我有一个活动,例如: FoodActivity,在这个活动中,我创建了网格的食物类型,我用RecyclerView来做这个提议。FoodActivity在标题栏中有后退按钮.我正在使用setDisplayHomeAsUpEnabled在标题栏中的图标上放置一个后标记。
supportActionBar?.setDisplayHomeAsUpEnabled(true)问题:当用户点击食物项目的类型时,新的片段将被打开。但是,当用户现在单击“后退”按钮时,他不会返回带有FoodActivity项网格的预览版RecyclerView。用户返回到MainActivity。它不能用。我需要后退按钮,只要关闭片段,并返回到prev活动,而不是"prev-prev“。
我找到了这段代码:
override fun onAttach(context: Context) {
super.onAttach(context)
val callback: OnBackPressedCallback =
object : OnBackPressedCallback(true)
{
override fun handleOnBackPressed() {
// Leave empty do disable back press or
// write your code which you want
}
}
requireActivity().onBackPressedDispatcher.addCallback(
this,
callback
)
}它可以帮助,但它不工作的后退按钮在标题栏。此代码仅适用于设备的默认后退按钮。有办法解决我的问题吗?
发布于 2022-06-01 09:38:57
在片段的onCreate方法中添加以下代码:
setHasOptionsMenu(true)此方法调用将允许您的片段填充选项菜单,包括工具栏中的后退图标。
现在,您可以重写onOptionsItemSelected方法来执行操作,只要按下任何按钮,在您的例子中,就是上回箭头。
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
// top back arrow is mapped to android.R.id.home
android.R.id.home -> {
//Close the fragment and navigate back to Recyclerview
}
}https://stackoverflow.com/questions/72457139
复制相似问题