簡體   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