Захватить событие клика во фрагменте - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть ViewPager и Fragment в пейджере с 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 голосов
/ 09 апреля 2019

У вас должен быть флаг на уровне класса «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) {}
    });
...