繁体   English   中英

如何使用标题栏中的后退按钮关闭片段?

[英]How to use Back-Button in the title bar for closing the fragment?

我有一个活动,例如:FoodActivity 在这个活动中我创建了食物类型的网格,我使用 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
           }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM