ViewPager中的片段中未触发OnClick事件

mat*_*tip 11 android android-viewpager

我里面有我的碎片ViewPager,我希望其中一个可以点击RelativeLayout.我正在使用数据绑定:

<data>

        <variable
            name="handlers"
            type="com.matip.presenters.MyPresenter" />
</data>

<RelativeLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:onClick="@{() -> handlers.onLayoutClick()}">

                ...
                ...
                ...

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的碎片onCreateView:

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        mBind = DataBindingUtil.inflate(inflater, R.layout.fragment_layout, container, false);
        presenter = new MyPresenter();
        mBind.includedLayout.setHandlers(presenter);
        return mBind.getRoot();
    }
Run Code Online (Sandbox Code Playgroud)

但是onLayoutClick没有被召唤.它与ViewPager有关吗?是否需要点击而不是里面的片段?如果是这样,我该如何解决?

编辑

My ViewPager Adapter:
private class MyViewPagerAdapter extends FragmentStatePagerAdapter {
        public MyViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch(position) {
                case 0:
                    return MainInfoFragment.newInstance(parkingId);
                case 1:
                    return MainDescFragment.newInstance(parkingId);
                case 2:
                    return MainServicesFragment.newInstance(parkingId);
                default:
                    return null;
            }


        }

        @Override
        public int getCount(){
            return 3;
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            switch(position){
                case 0: return getContext().getString(R.string.info_title);
                case 1: return getContext().getString(R.string.desc_title);
                case 2: return getContext().getString(R.service_title);
                default: return null;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ber*_*yle 3

要使onClickXML 中的属性起作用,该方法需要处于活动状态。对于片段,首选方法是以编程方式设置侦听器。如果该方法位于活动中,则 XML 方法将起作用,但如果该方法需要针对不同片段采取不同的行为,则该方法将变得复杂。

另外我不明白你的意思android:onClick="@{() -> handlers.onLayoutClick()}"。通常情况下它看起来像android:onClick="onLayoutClick"。定义就像

public void onLayoutClick(View view) {
    //Your code
} 
Run Code Online (Sandbox Code Playgroud)

还有另一种可能性:您可能已将 OnTouchListener 设置为覆盖单击的视图。如果您想要触摸和单击侦听器,请尝试GestureDetector