如何防止通过点击刚刚打开的片段来打开新的片段?

How to prevent opening a new fragment by clicking on the one just opened?

我使用 RecyclerView 创建了项目网格。当用户单击该项目时,将打开全屏片段。它运作良好。但是当用户单击任何全屏片段表面时,我看到了奇怪的情况,来自 RecyclerView 网格的新片段打开。事实证明,用户实际上单击了片段下方的按钮。如何避免这种情况?

以下是如何组织点击监听的代码块:

SetGrid.adapter = TestAdapter{ position ->

        when (position) {

            0 -> {
                val transaction = supportFragmentManager.beginTransaction()
                transaction.replace(R.id.fr_frame, OneFragment())
                transaction.disallowAddToBackStack()
                transaction.commit()
            }

            1 -> {
                val transaction = supportFragmentManager.beginTransaction()
                transaction.replace(R.id.fr_frame, TwoFragment())
                transaction.disallowAddToBackStack()
                transaction.commit()
            }

           2 -> {
                val transaction = supportFragmentManager.beginTransaction()
                transaction.replace(R.id.fr_frame, ThreerFragment())
                transaction.disallowAddToBackStack()
                transaction.commit()
            }

      }

根据您所说,您在后台的片段正在触发 on-touch 导航。你可以从后台堆栈中删除它,因为我看到你使用了 disallowAddToBackStack()。我怀疑它没有按预期工作,因此最好在片段的 oncreate 方法中使用“popBackStack()”。