ViewPager définir la page actuelle par programmation
J'ai écrit une coutume ViewPager
pour désactiver Swipe Scroll
, mais je veux balayez vers la programmation. J'ai trois Tab
, à mon avis, pager, mais quand je l'appelle viewPager.setCurrentItem(viewPager.getCurrentItem()+1)
sur la première Fragment
, il passe à la troisième Fragment
au lieu de la deuxième Fragment
. Et si je l'appelle, même fonction dans la deuxième Fragment
, il passe à la troisième. Si je l'appelle, (viewPager.getCurrentItem()-1)` dans le troisième fragment, il fonctionne très bien par revenir. Toute aide serait appréciée. Mon code est ci-dessous:
NonSwipeAbleViewPager
public class NonSwipeableViewPager extends ViewPager {
private boolean swipeable;
public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyViewPager);
try {
swipeable = a.getBoolean(R.styleable.MyViewPager_swipeable, true);
} finally {
a.recycle();
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return swipeable ? super.onInterceptTouchEvent(event) : false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return swipeable ? super.onTouchEvent(event) : false;
}
}
Déclaration XML
<co.example.customview.NonSwipeableViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:swipeable="false" />
L'appelant
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuNext:
NonSwipeableViewPager pages = (NonSwipeableViewPager) getActivity().findViewById(R.id.pager);
pages.setCurrentItem(pages.getCurrentItem()+1, true);
break;
default:
return super.onOptionsItemSelected(item);
}
return super.onOptionsItemSelected(item);
}
êtes-vous sûr que lorsque vous appuyez sur le menuNext bouton le premier bouton, vous êtes sur le fragment à l'indice 0 ?
Je pense que je me souviens de certaines bizarreries du travail de ce genre à un certain point. Je ne peux pas rappeler ce que la résolution a été.
Avez-vous essayé de séparer les déclarations? int currentItem = pages.getCurrentItem(); currentItem++; pages.setCurrentItem(currentItem);
Je suis. J'ai essayé de l'avoir Connecté par
Même chose. Passe à la troisième page
Je pense que je me souviens de certaines bizarreries du travail de ce genre à un certain point. Je ne peux pas rappeler ce que la résolution a été.
Avez-vous essayé de séparer les déclarations? int currentItem = pages.getCurrentItem(); currentItem++; pages.setCurrentItem(currentItem);
Je suis. J'ai essayé de l'avoir Connecté par
Log.e("PAGES:", String.valueOf(pager.getCurrentItem()));
Le plus drôle, c'est que, si je suis sur le deuxième onglet et passer à la troisième onglet, il ne marche pas le journal. Mais, si je suis sur la première et cliquez sur le troisième Onglet, il enregistre la page en tant que 2
Même chose. Passe à la troisième page
OriginalL'auteur Abubakar Oladeji | 2015-03-10
Vous devez vous connecter pour publier un commentaire.
Dans votre PagerActivity utilisation
et
OriginalL'auteur eurosecom
où idx 0 entier.
OriginalL'auteur Alp Altunel