首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在标题栏中使用Back-Button来关闭片段?

如何在标题栏中使用Back-Button来关闭片段?
EN

Stack Overflow用户
提问于 2022-06-01 06:07:48
回答 1查看 51关注 0票数 0

我有一个活动,例如: FoodActivity,在这个活动中,我创建了网格的食物类型,我用RecyclerView来做这个提议。FoodActivity在标题栏中有后退按钮.我正在使用setDisplayHomeAsUpEnabled在标题栏中的图标上放置一个后标记。

代码语言:javascript
复制
supportActionBar?.setDisplayHomeAsUpEnabled(true)

问题:当用户点击食物项目的类型时,新的片段将被打开。但是,当用户现在单击“后退”按钮时,他不会返回带有FoodActivity项网格的预览版RecyclerView。用户返回到MainActivity。它不能用。我需要后退按钮,只要关闭片段,并返回到prev活动,而不是"prev-prev“。

我找到了这段代码:

代码语言:javascript
复制
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
  )
 }

它可以帮助,但它不工作的后退按钮在标题栏。此代码仅适用于设备的默认后退按钮。有办法解决我的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-01 09:38:57

在片段的onCreate方法中添加以下代码:

代码语言:javascript
复制
setHasOptionsMenu(true)

此方法调用将允许您的片段填充选项菜单,包括工具栏中的后退图标。

现在,您可以重写onOptionsItemSelected方法来执行操作,只要按下任何按钮,在您的例子中,就是上回箭头。

代码语言:javascript
复制
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
           }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72457139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档