Ho un Fragment
MyFragment con ViewPager
contenente più Fragment
. Funziona correttamente la prima volta che carico MyFragment, ma se torno indietro e lo ricrei, lo Fragments
nello ViewPager
non viene mostrato perché il metodo FragmentPagerAdapter.getItem
non viene chiamato.Frammenti in ViewPager non caricati quando viene ricreato il frammento contenente
Sto usando
Cosa c'è che non va?
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
...
public class MyFragment extends Fragment {
private ViewPager pager;
private MyPagerAdapter adapter;
private List<Fragment> fragmentList = new ArrayList<Fragment>();
public MyFragment() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.my_fragment_layout, container, false);
}
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
indicators = (PagerSlidingIndicator) v.findViewById(R.id.indicators);
pager = (ViewPager) v.findViewById(R.id.pager);
Fragment fragment1 = new Fragment1();
fragmentList.add(fragment1);
Fragment fragment2 = new Fragment2();
fragmentList.add(fragment2);
Fragment fragment3 = new Fragment3();
fragmentList.add(fragment3);
adapter = new IndicatorPagerAdapter(getFragmentManager());
pager.setAdapter(adapter);
}
public class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
}
}
getChildFragmentManager(): la chiamata richiede il livello API 17 e ho min = 15. Quindi l'unico modo è usare il supporto 'Fragment', giusto? – jul
Sì, la triste verità è che dovevo sostituire tutti i miei frammenti per supporto Fragment per poter usare getChildFragmentManager() – jul
@jul: Sì, la nozione di frammenti nidificati è stata aggiunta solo all'implementazione nativa dei frammenti in API Livello 17 Le vostre alternative potrebbero essere o non avere il 'ViewPager' essere in un frammento o non avere frammenti come pagine del' ViewPager'. – CommonsWare