Android 主机片段在另一个片段位于顶部时接收触摸事件

Android 主机片段在另一个片段位于顶部时接收触摸事件,android,android-fragments,android-dialogfragment,Android,Android Fragments,Android Dialogfragment,我正在创建一个全屏对话框,如下所述 因此,当我想从片段中打开这个全屏对话框时,我会: FragmentTransaction transaction = getActivity() .getSupportFragmentManager() .beginTransaction(); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.add(andro

我正在创建一个全屏对话框,如下所述

因此,当我想从片段中打开这个全屏对话框时,我会:

FragmentTransaction transaction = getActivity()
        .getSupportFragmentManager()
        .beginTransaction();

transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

transaction.add(android.R.id.content, newFragment)
           .addToBackStack(null)
           .commit();
然而,这似乎有一个问题。当我点击屏幕时,不仅对话框片段接收触摸事件,还接收基线主机片段。因此,通过点击主机片段中的某个动作,它会被触发

为什么会发生这种情况?主机片段不应接收触摸事件

我可以通过不添加,而是用对话框片段替换主机片段来解决这个问题,但这会破坏后堆栈

因此,当我想从片段中打开这个全屏对话框时,我会这样做

这与对话无关。
DialogFragment
像对话框一样工作的唯一方法是调用
show()

为什么会发生这种情况

您将一个片段添加到与另一个现有片段相同的容器中。因此,这两个片段的小部件与同一容器的子组件处于相同的视图层次结构中——例如,您可以在层次结构视图中看到这一点。没有“宿主片段”的概念

我可以通过不添加,而是用对话框片段替换主机片段来解决这个问题,但这会破坏后堆栈

我没想到它会打破这一局面。按BACK键应该会反转事务,并在
commit()
-ted事务时还原该容器中的任何片段。

类似于