Reputation: 3565
I am using a viewPager for its swipe abilities to swipe between two Fragments. However I want to refresh the Fragment contents on swipe. The FragmentStatePagerAdapter does a very good job of caching so its hard to get the Fragment to reload. I've tried putting everything in the onResume method but that has no effect.
My Adapter is pretty simple:
public class AdapterHomePre extends FragmentStatePagerAdapter {
ArrayList<Fragment> mFrags = new ArrayList<Fragment>();
public AdapterHomePre(FragmentManager fm) {
super(fm);
mFrags.add(new FragmentOne());
mFrags.add(new FragmentTwo());
}
@Override
public int getCount() {
return mFrags.size();
}
@Override
public Fragment getItem(int position) {
return mFrags.get(position);
}
}
I've tried all sorts of things as suggested on stack overflow, including as suggested this:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Which makes no difference.
I don't really want to destroy the fragment each time, but I've not even been able to get that working.
Upvotes: 3
Views: 2754
Reputation: 3565
What I ended up doing was editing the Fragment that sets up the viewPager so it forces the child Fragment to reload:
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
//Not used
}
@Override
public void onPageSelected(int position) {
//Force the fragment to reload its data
Fragment f = mAdapter.getItem(position);
f.onResume();
}
@Override
public void onPageScrollStateChanged(int i) {
//Not used
}
});
Upvotes: 2