我有一个活动,例如:FoodActivity在这个活动中,我创建了Food类型的网格,我使用了RecyclerView。FoodActivity在标题栏中有后退按钮。我正在使用setDisplayHomeAsUpEnabled在标题栏的图标上放一个返回标记。
supportActionBar?.setDisplayHomeAsUpEnabled(true)
问题:当用户点击食品项目的类型时,新的片段被打开。但是当用户现在单击后退按钮时,他返回的不是带有RecyclerView项网格的预览FoodActivity。用户返回到MainActivity。它无法使用。我需要后退按钮,只是关闭片段,并返回到前一个活动,而不是到"前-前"
我找到了这段代码:
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
)
}
它可以帮助,但它不适用于标题栏中的后退按钮。此代码仅适用于设备的默认后退按钮。有办法解决我的问题吗?
在您的片段的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
}
}