Reputation: 2362
I'm working with a ViewPager and change pages with a button. I've got it to work but it has inconsistent performance. Sometimes it just wont react. You can still scroll with touch but the button doesn't work. I have a ViewPager with a few fragments. This is the ViewPager code in FragmentActivity:
private void initializeViewPager() {
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
ActionBar actionBar = getActionBar();
@Override
public void onPageSelected(int position) {
currentPage = position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
Log.d(TAG, "onPageScrollStateChanged: " + state);
}
});
}
This is the code in one of the Fragments:
// Referring to the ViewPager from FragmentActivity
static ViewPager mViewPager = MainActivity.mViewPager;
// Register onClick and setPagerItem
ImageView next = (ImageView)v.findViewById(R.id.ic_menu_next);
next.requestFocus();
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
mViewPager.setCurrentItem(getItem(+1), true);
}
});
// This figures out where in the ViewPager you are
private static int getItem(int i) {
int a = mViewPager.getCurrentItem();
i += a;
return i;
}
Any suggestions?
Upvotes: 1
Views: 7203
Reputation: 22306
Try using your currentPage
field for the position. Calling getCurrentItem() on a ViewPager does not seem to work correctly for getting the position.
mViewPager.setCurrentItem(currentPage + 1, true);
Upvotes: 2