如何使用返回按钮在标题栏关闭片段?



我有一个活动,例如: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
}
}

最新更新