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 .*

  1. mainActivity I overrided the onResume and did the following

     if (!(mPagerAdapter == null)) {
    
             mPagerAdapter.notifyDataSetChanged();
    
    
         }
    
  2. I ovveride the getItemPosition() in mPagerAdapter 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;
}