2014-09-14 3 views
1

Предположим, у меня есть фрагменты в моем плеере. Я хочу сделать некоторую проверку в методе onPageSelected() перед следующим фрагментом. Я не хочу идти дальше, если проверка не будет выполнена. Другой вопрос: как я могу узнать предыдущую позицию? Если я прокручу влево-вправо, предыдущей позиции будет позиция-1, и если справа налево, это будет позиция + 1. Но все равно знать направление, которое пользователь проверил. На следующем рисунке он должен оставаться (без перехода к следующему фрагменту), если пользователь ничего не заполнит. Надеясь правильный ответ ..Как проверить валидацию после пейджера?

enter image description here

+0

«Я не хочу идти в следующий фрагмент, если это не действует», - то не использовать 'ViewPager'. Если вы хотите мастера, напишите мастер. – CommonsWare

+0

Хорошо, всегда есть способ. Я собираюсь показать вам, как сделать это с пейджером в течение нескольких дней. Теперь я занимаюсь исследованиями. –

+0

Моя точка зрения заключается в том, что то, что вы делаете, является враждебным пользователем. Независимо от того, насколько технически это возможно, это не помогает, если пользователи злятся, когда они прокручиваются на другую страницу, только чтобы оказаться вынужденными вернуться на предыдущую страницу. Если вы не хотите, чтобы люди переключались между страницами, не используйте «ViewPager». – CommonsWare

ответ

4

После нескольких часов исследований, я получил мое решение. Вот и все.

private OnPageChangeListener pageChangeListener = new OnPageChangeListener() { 

    int currentPosition = 0; 

    @Override 
    public void onPageSelected(int newPosition) { 

     // my code 
     boolean isValid = false; // <-- here, you need to check yourself valid or not 
     if (!isValid) { 
      pager.setCurrentItem(currentPosition); 
     }else{ 
      pager.setCurrentItem(newPosition); 
      currentPosition = newPosition; 
     } 
    } } 

Пользователь не может видеть следующий экран, если он недействителен, независимо от того, сколько раз он провел пальцем по пейджеру.

0

частный OnPageChangeListener pageChangeListener = новый OnPageChangeListener() {

int currentPosition = 0; 

@Override 
public void onPageSelected(int newPosition) { 

    // my code 
    boolean isValid = false; // <-- here, you need to check yourself valid or not 
    if (!isValid) { 
     pager.setCurrentItem(currentPosition); 
    }else{ 
     pager.setCurrentItem(newPosition); 
     currentPosition = newPosition; 
    } 
} } 

работает в первый раз только

+0

try boolean isValid = false || newPosition == 0; –

Смежные вопросы