如何在标题栏中使用 Back-Button 来关闭片段?
How to use Back-Button in the title bar for closing the fragment?
我有 activity 例如:FoodActivity 在这个 activity 我创建了食物类型的网格,我使用 RecyclerView 来提出这个建议。 FoodActivity 在标题栏中有 back-button。我正在使用 setDisplayHomeAsUpEnabled 在标题栏中的图标处放置一个后退标记。
supportActionBar?.setDisplayHomeAsUpEnabled(true)
问题:当用户点击食品项目类型时,新片段被打开。但是,当用户现在单击后退按钮时,他 return 不会使用 RecyclerView 项目网格预览 FoodActivity。用户 returns 到 MainActivity。它不可用。我需要后退按钮只是关闭片段,return 到上一个 activity 而不是到“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
)
}
它可以提供帮助,但它不适用于标题栏中的 back-button。此代码仅适用于设备的默认后退按钮。有办法解决我的问题吗?
在片段的 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
}
}
我有 activity 例如:FoodActivity 在这个 activity 我创建了食物类型的网格,我使用 RecyclerView 来提出这个建议。 FoodActivity 在标题栏中有 back-button。我正在使用 setDisplayHomeAsUpEnabled 在标题栏中的图标处放置一个后退标记。
supportActionBar?.setDisplayHomeAsUpEnabled(true)
问题:当用户点击食品项目类型时,新片段被打开。但是,当用户现在单击后退按钮时,他 return 不会使用 RecyclerView 项目网格预览 FoodActivity。用户 returns 到 MainActivity。它不可用。我需要后退按钮只是关闭片段,return 到上一个 activity 而不是到“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
)
}
它可以提供帮助,但它不适用于标题栏中的 back-button。此代码仅适用于设备的默认后退按钮。有办法解决我的问题吗?
在片段的 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
}
}