捕获片段中的点击事件

时间:2019-04-09 11:36:54

标签: android android-viewpager onclicklistener

我有一个ViewPager和一个Fragment在viewpager中有4个按钮。我想检查在滑动到其他页面之前是否单击了任何按钮。我尝试通过ontouchevent进行操作,但没有成功。我尝试了这段代码。

    l1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    });

    l2.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    });
    l3.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    });
    l4.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    });

请帮助我决定如何实现此目标。因为我想知道用户在进入下一页之前是否单击了任何按钮。

1 个答案:

答案 0 :(得分:0)

您需要在类级别“ isAnyButtonClicked”上具有一个标志,并且还需要为每个按钮设置onClickListener。在每个按钮onClickListener上,您需要设置该标志。喜欢

 boolean isAnyButtonClicked = false; // you can declare it as static as well

 // Now in your fragment that is loaded in viewpager, set clicklistner for each button


 l1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        isAnyButtonClicked = true;
    }
});


l2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        isAnyButtonClicked = true;
    }
});

现在在ViewScrollr上添加Viewpager onScroll Listener,以检测活动或具有查看寻呼机的片段中的滑动事件

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {
               if (isAnyButtonClicked) {
                    // Do whatever you want :)
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
    });