Android 如何在显示片段时使其他元素无法点击 [Kotlin]

Android How to make unclickable other elements when fragment is showed [Kotlin]

我有约束布局。在它里面我有三个元素:中间的工具栏、RecyclerView 和 FragmentContainerView。看起来像 this.

我制作了可点击的 RecyclerView,当我点击所选项目时,我在 FragmentContainerView 上添加了新片段

 adapter.setOnItemClickListener(object: RecyclerViewAdapter.OnItemClickListener{
        override fun onItemClick(position: Int) {

            supportFragmentManager.beginTransaction().add(R.id.fragmentcontainer_id, Fragment1::class.java,null).addToBackStack(null).commit()
        }

    })

问题是片段显示后,我仍然可以滚动 RecyclerView 并与之交互。在关闭打开的片段之前,我想让所有其他元素都不可点击。

您可以在点击侦听器中添加一个 if 条件来检查该片段是否已经显示,如果是这种情况基本上什么也不做。如果在 adding 片段时包含标签,you could just check if it's already added:

override fun onItemClick(position: Int) {
    val tag = "my cool fragment"
    if (supportFragmentManager.findFragmentByTag(tag) == null) {
        supportFragmentManager.beginTransaction()
            .add(R.id.fragmentcontainer_id, Fragment1::class.java, null, tag) // tagged here
            .addToBackStack(null)
            .commit()
    } // does nothing if a fragment with that tag already exists
}