Try it...
To update a fragment, you need an instance of it first.
change this value
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
to
ArrayList<Fragment> fr_list = new ArrayList<Fragment>(); fr_list.add(new FragmentCanali()); fr_list.add(new FragmentPreferiti()); MyAdapter mMyAdapter = new MyAdapter(getChildFragmentManager(),fr_list); viewPager.setAdapter(mMyAdapter);
In the adapter, change this value
public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position){ case 0 : return new FragmentCanali(); case 1 : return new FragmentPreferiti(); } return null; } public int getCount() { return int_items; }
to
public MyAdapter(FragmentManager fm,ArrayList<Fragment> fr_list) { super(fm); this.fr_list=fr_list; } @Override public Fragment getItem(int position) { return fr_list.get(position); } public int getCount() { return fr_list.size(); }
add refresh () methods inside the fragments and call them when you need, for example below
((FragmentCanali) mMyAdapter.fr_list.get(0)).refresh();
source share