Here I use ViewPager for Fragments, I used a custom pager view to control navigation. here is the class
public class NonSwipeableViewPager extends ViewPager {
public NonSwipeableViewPager(Context context) {
super(context);
setMyScroller();
}
public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setMyScroller();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return false;
}
private void setMyScroller() {
try {
Class<?> viewpager = ViewPager.class;
Field scroller = viewpager.getDeclaredField("mScroller");
scroller.setAccessible(true);
scroller.set(this, new MyScroller(getContext()));
}catch (Exception e) {
e.printStackTrace();
}
}
public class MyScroller extends Scroller {
public MyScroller(Context context) {
super(context, new DecelerateInterpolator());
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
super.startScroll(startX, startY, dx, dy, 350 );
}
}
}
There are no Swipe and Click events. but what is the problem:
when I select FIRST NAME and press the arrow button on my tablet (Samsung), it will go to the MIDDLE NAME and then the LAST NAME , after the LAST NAVIGATE NAME FOR THE NEXT Fragment i.e. INTRODUCTION to my pager. this is my problem, how to prevent this?
what I tried, I set the EditText property nextFocusForward
and tried
v.setFocusableInTouchMode(true);
v.requestFocus();
v.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_NAVIGATE_NEXT) {
return false;
}
}
return false;
}
});
!
? ?
( Samsung) .
?