Following this question:
How to recreate all fragments in ViewPager:
I have those classes:
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;
}
}
and a FragmentActivity
:
public class TabsViewPagerFragmentActivity extends FragmentActivity implements
ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener
{
static final String TAG = TabsViewPagerFragmentActivity.class.getSimpleName();
private TabHost mTabHost;
private ViewPager mViewPager;
private HashMap<String, TabInfo> mapTabInfo = new HashMap<String, TabsViewPagerFragmentActivity.TabInfo>();
public ViewPagerAdapter mPagerAdapter;
.....
Now in this FragmentActivity
I have this listener:
private class SlicerSelectedOnClickListener implements OnClickListener
{
private ODSharedSlicer slicer;
private int slicerIndex;
public SlicerSelectedOnClickListener(ODSharedSlicer slicer, int slicerIntex)
{
super();
this.slicer = slicer;
this.slicerIndex = slicerIntex;
}
public void onClick(View v)
{
slicerOnClickConfiguration(slicerIndex, v);
mPagerAdapter.notifyDataSetChanged();
}
}
....
And this works great notifyDataSetChanged()
is getting called and the ViewPager's Fragments are getting recreated as I want.
The Problem: When I try to call the notifyDataSetChanged()
method of the adapter from another class (In my case it's a class that responsible to parse data that is received from the server) the fragments remain unchanged.
I tried to do this: I created those methods in my FragmentActivity
class (the one with the ViewPager
):
public void NotifyTabActivityViewPagerAdapter()
{
mPagerAdapter.notifyDataSetChanged();
}
public ViewPagerAdapter getTabActivityViewPagerAdapter()
{
return mPagerAdapter;
}
public ViewPager getTabActivityViewPager()
{
return mViewPager;
}
And tried the following from the second class:
((TabsViewPagerFragmentActivity)currentActivity).NotifyTabActivityViewPagerAdapter();
Or:
((TabsViewPagerFragmentActivity)currentActivity).getTabActivityViewPager().setAdapter(((TabsViewPagerFragmentActivity)currentActivity).getTabActivityViewPagerAdapter());
But non of this works. Strangely when I run this:
((TabsViewPagerFragmentActivity)currentActivity).getTabActivityViewPager().setAdapter(null);
The fragments do get removed, But I can't recreate the new set of fragments with the new data received from server side.
What am I missing here? How should I recreate all the fragment in this FragmentActivity
from another class?
Any assistance would be appreciated.