Android Swipe для изменения фрагментов не работает
Я пытаюсь создать приложение, в котором пользователь может пролистывать и изменять фрагмент, который он видит на экране. Я не могу использовать просмотр пейджера, потому что хочу, чтобы пользователь мог навсегда пролистывать разные фрагменты. Вот детектор в моем фрагменте:
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE & Math.abs(velocityX) > 10) {
left();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE & Math.abs(velocityX) > 10) {
right();
}
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY){
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE & distanceX > distanceY) {
left();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE & distanceX > distanceY) {
right();
}
return false;
}
}
public void right(){
mCallback.dateNumber(true);
sportView.setText("Loading");
}public void left(){
mCallback.dateNumber(false);
sportView.setText("Loading");
}
В моей деятельности вот слушатель, которого я добавил для изменения фрагментов:
@Override
public void dateNumber(Boolean left_right) {
//true == right
//false == left
if(left_right == false){
day = day + 1;
Fragment1 rightFragment = new Fragment1();
Bundle args = new Bundle();
args.putInt("day", day);
rightFragment.setArguments(args);
android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, rightFragment);
transaction.addToBackStack(null);
transaction.commit();
}else if(left_right == true){
day = day - 1;
Fragment1 leftFragment = new Fragment1();
Bundle args = new Bundle();
args.putInt("day", day);
leftFragment.setArguments(args);
android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, leftFragment);
transaction.addToBackStack(null);
transaction.commit();
}
left_right = null;
}
Я знаю, что жест смахивания всегда распознается, но иногда новый фрагмент побеждаетне открывай. Кто-нибудь знает почему?