捕获片段中的单击事件

问题描述 投票:0回答:1

我有一个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;
        }
    });

请帮我决定如何实现这一点。我想知道用户是否点击了任何按钮,然后再转到下一页。

android android-viewpager onclicklistener
1个回答
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;
    }
});

现在添加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) {}
    });
© www.soinside.com 2019 - 2024. All rights reserved.