I have a ViewPager
and I have to replace the first Fragment
if a certain action happens.
public static class PagerAdapter extends FragmentStatePagerAdapter{ private TempChannel latestChannel; private VideosFragment.SortType sortType; public PagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position){ case 0: if(latestChannel == null) { return new LatestVideosFragment(); }else{ return VideosFragment.getVideosFragment(latestChannel, sortType); } case 1: return new LiveVideosFragment(); case 2: return new ConversationsFragment(); } return null; } }
Basically, when I click a channel in the LatestVideosFragment
, the first position in the adapter should change to an instance of the VideosFragment
class.
public void startLatestChannelFragment(TempChannel channel, VideosFragment.SortType sortType){ adapter.setLatestChannel(channel, sortType); adapter.notifyDataSetChanged(); Log.d("x", "on channel started"); }
I assumed that calling notifyDataSetChanged()
on the adapter would update the fragment, but it does not. Also tried calling invalidate(
) on the ViewPager
without any effect. The Fragment
is updated only if I go to the third tab, and then return to the first.