在onClickListener问题的另一个片段之上添加片段

Arc*_*486 19 android android-fragments

我正在活动添加一个片段而不是替换当前片段(因为这对应于我想要的行为类型).

我的问题是点击顶部片段(当前可见的片段)上的一个点(非可见片段中的视图所在的位置)会导致第二个不可见片段中视图上的onClick事件触发.为什么会发生这种情况?如何防止这种情况发生?

这是我用来首先将ListView片段添加到活动的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...

    if (savedInstanceState == null) {
        listFragment = new ListFragment ();
        getSupportFragmentManager().beginTransaction()
                .add(R.id.frame_container, listFragment)
                .addToBackStack(listFragment .TAG)
                .commit();
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

在同一个活动中,我在列表片段的顶部添加第二个片段:

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent data) {
    ...
            createItemFragment = new CreateItemFragment();
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.frame_container, createItemFragment)
                    .addToBackStack(createItemFragment.TAG)
                    .commit();
    ...
}
Run Code Online (Sandbox Code Playgroud)

C0D*_*OU5 32

您可以将以下属性添加到最顶层的片段的XML根布局中 -

android:clickable="true"
Run Code Online (Sandbox Code Playgroud)

这将确保触摸事件不会比顶层传播更多.

  • 以及为什么这不是一个合适的解决方案?这基本上告诉系统点击事件不应该比顶层传播更多 - 如果你用活动事件列表器覆盖视图,这对我来说似乎是合适的. (2认同)