Reputation: 41
I have a problem with my ViewPager. I'm using custom ImageButtons to swipe between fragments. The problem is, when I try to swipe from third fragment to fourth (case 3) fragment, the fifth(case 4) fragment is executed(without fragment UI) and then is showed fourth fragment. Thanks
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: return ScreenSlidePageJobTitle.newInstance();
case 1: return ScreenSlidePageJobDescription.newInstance();
case 2: return ScreenSlidePageJobLocation.newInstance();
case 3: return ScreenSlidePageJobPrice.newInstance();
case 4: return ScreenSlidePageJobToDb.newInstance();
default: return ScreenSlidePageJobToDb.newInstance();
}
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
public void setSlide(int slide, boolean scroll) {
mViewPager.setCurrentItem(slide, scroll);
}
public int getItem() {
return mViewPager.getCurrentItem();
}
}
I'm using this functionality to swipe
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkLocation())
{
int slide = ((AddItemFragment)(getParentFragment())).getItem() + 1;
((AddItemFragment)(getParentFragment())).setSlide(slide, true);
}
}
});
// edit mViewPager is declared as global variable and define in onCreateView
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_add_item, container, false);
mViewPager = rootView.findViewById(R.id.add_item_view_pager);
mViewPager.setAdapter(new ScreenSlidePagerAdapter(getChildFragmentManager()));
SharedPreferences sharedPreferences = getContext().getSharedPreferences(JOB_PREFERENCES, Context.MODE_PRIVATE);
return rootView;
}
Upvotes: 0
Views: 427
Reputation: 2474
Just try this code:
viewpager.setOffscreenPageLimit(4);
This code solve your problem.
Upvotes: 0
Reputation: 446
By default ViewPager retains 1 fragment on either side of the current fragment. Check https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)
Upvotes: 1