如何在片段 kotlin 中编写 onBackPressed()

Posted

技术标签:

【中文标题】如何在片段 kotlin 中编写 onBackPressed()【英文标题】:how to write onBackPressed() in fragment kotlin 【发布时间】:2022-01-08 01:33:53 【问题描述】:

我在仪表板活动中创建了 4 个片段

1、2、3、4 在后退按钮按下时,我必须从 4 到 1、3 到 1、2 到 1 返回

这样做的最佳做法是什么?

我的应用不得返回最近打开的片段,例如 4 到 3、3 到 4

【问题讨论】:

向前移动时不断从后台弹出片段。例如。当你从 2 到 3 时,从 backstack 中移除 2,当从 3 到 4 时,从 backstack 中移除 3。 你在使用导航控制器吗?这个问题与今天用户名非常相似的人提出的另一个问题非常相似。这是询问相同问题的备用帐户吗? 【参考方案1】:

覆盖活动中的onBackPressed() 方法并编写此代码sn-p。我想解决你的问题

 @Override fun onBackPressed() 
    while (supportFragmentManager.getBackStackEntryCount() > 0) 
                if (supportFragmentManager.findFragmentById(R.id.container) is Fragment1) 
                    return
                
                getSupportFragmentManager().popBackStackImmediate()
            
    
    

【讨论】:

【参考方案2】:

您也可以使用 Jetpack Navigation,它为您提供了一个 GUI,您可以在导航结构中查看所有目的地。

https://developer.android.com/guide/navigation? gclid=Cj0KCQiA15yNBhDTARIsAGnwe0UOz85aXEUlPqKU7VnbeGQKAwGufnfxbxTZDNyj6670Oxu3PbkyjtoaAnk4EALw_wcB&gclsrc=aw.ds

【讨论】:

以上是关于如何在片段 kotlin 中编写 onBackPressed()的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Fragments 中实现 onBackPressed()?

如何在 Kotlin 片段内的按钮之间切换片段?

kotlin:如何在两个片段之间传递数据

在 Kotlin 中单击外部时如何关闭底部工作表片段?

如何根据在 Kotlin 中选择的片段显示/隐藏 FloatingActionButton?

Kotlin - 如何将空值传递给片段 newInstance 方法?