Fragment
MyFragment ile ilgili daha fazla Fragment
içeren ViewPager
var. MyFragment'i ilk kez yüklediğimde düzgün çalışıyor ancak geri dönüp yeniden oluşturursamViewPager
yöntemi, FragmentPagerAdapter.getItem
yönteminin çağrılmadığı için gösterilmiyor.İçerisindeki Parçacığı yeniden oluşturulduğunda değil ViewPager'daki fragmanlar yüklenmedi
kullanıyorum
kullanıyorumNeyin var?
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(): Çağrı API düzeyi 17 gerektirir ve bende min = 15 var. Yani tek yol, 'Fragment' desteğini kullanmaktır, değil mi? – jul
Evet, üzücü gerçek şu ki, tüm Fragments'ımı getChildFragmentManager() – jul
'u kullanabilmek için Fragmenti destekleyerek değiştirmem gerekti. @jul: Evet, iç içe geçmiş fragmanlar kavramı yalnızca API Level 17'deki parçaların yerel uygulamasına eklendi. Alternatifleriniz, "ViewPager" ın bir parçacığa sahip olmaması veya "ViewPager" in sayfaları olarak parçalara sahip olmamasıdır. – CommonsWare