0

I want to update container fragment base on data inside the page fragment in ViewPager. I used this solution Retrieve a Fragment from a ViewPager and it works fine when I swipe the view.

But I cannot figure out how to get hint (callback) if first page is loaded. At the beginning? Of course onPageSelected is called but when I try to get fragment I got null.

  Data data = null;

  mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
      @Override
      public void onPageSelected(int position) {
          PageFragment page = MyPagerAdapter.getPageFragment(position);
          if(page != null)
             data = page.getData();
          else
             Log.w(TAG,"page is null"); //i get it at first time. :(

          }
  });

Below MyPageAdapter which I use (accordint to Retrieve a Fragment from a ViewPager)

public class MyPagerAdapter extends FragmentStatePagerAdapter {
    SparseArray<PageFragment> registeredFragments = new SparseArray<PageFragment>();

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return ...;
    }

    @Override
    public Fragment getItem(int position) {
        return PageFragment.newInstance(...); 
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Fragment fragment = (Fragment) super.instantiateItem(container, position);
        registeredFragments.put(position, fragment);
        return fragment;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        registeredFragments.remove(position);
        super.destroyItem(container, position, object);
    }

    public PageFragment getPageFragment(int position) {
        return registeredFragments.get(position);
    }
}
Community
  • 1
  • 1
LunaVulpo
  • 3,043
  • 5
  • 30
  • 58

0 Answers0