How to recreate all fragments in ViewPager:
for those who still face the same problem which I faced the same problem when I have ViewPager
with seven fragment. the default for these fragments to load the English content from the service but the problem here that I want to change the language from settings activity and after finish settings activity I want ViewPager
in main activity to refresh the fragment to match the language selection from the user and load the Arabic content if user choose Arabic here what I did to work from the first trr :D
1. you must use FragmentStatePagerAdapter .*
mainActivity I overrided the
onResume
and did the followingif (!(mPagerAdapter == null)) { mPagerAdapter.notifyDataSetChanged(); }
I ovveride the
getItemPosition()
inmPagerAdapter
and make it return POSITION_NONE.@Override public int getItemPosition(Object object) { return POSITION_NONE; }
works like charm
As been suggested here by @Luksprog, changing my adapter class to this:
public class ViewPagerAdapter extends FragmentPagerAdapter
{
private List<Fragment> fragments;
/**
* @param fm
* @param fragments
*/
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
/* (non-Javadoc)
* @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
*/
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
/* (non-Javadoc)
* @see android.support.v4.view.PagerAdapter#getCount()
*/
@Override
public int getCount() {
return this.fragments.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
Fixed my issue.
what I did was to add this method:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}