Я использую ViewPager внутри класса Fragment. В этом ViewPager есть три страницы на каждой странице, я показываю настраиваемое представление списка. ViewPager Некоторое время показывает представление списка правильно, через некоторое время оно показывает пустую страницу.
Класс фрагмента с ViewPager
public class Schedule extends Fragment{
RelativeLayout schedule_lay;
Schedule_fragment_adapter sfadp;
ViewPager pager;
TitlePageIndicator tpi;
PagerTabStrip pts;
@Override
public View onCreateView(LayoutInflater inflater,final ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
schedule_lay = (RelativeLayout) inflater.inflate(R.layout.schedule, container, false);
pager = (ViewPager) schedule_lay.findViewById(R.id.viewpager);
pts = (PagerTabStrip)schedule_lay.findViewById(R.id.page_title_indicator);
pts.setDrawFullUnderline(false);
pts.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);
pts.setTabIndicatorColor(Color.parseColor("#ff3824"));
initialisePaging();
return schedule_lay;
}
private void initialisePaging() {
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(getActivity(), Ongoing.class.getName()));
fragments.add(Fragment.instantiate(getActivity(), Upcoming.class.getName()));
fragments.add(Fragment.instantiate(getActivity(), Recent.class.getName()));
this.sfadp = new Schedule_fragment_adapter(super.getActivity().getSupportFragmentManager(), fragments);
pager.setAdapter(this.sfadp);
}
}
< Сильный > FragmentPagerAdapter
public class Schedule_fragment_adapter extends FragmentPagerAdapter {
private final List<Fragment> fragments;
/**
* @param fm
* @param fragments
*/
public Schedule_fragment_adapter(FragmentManager fm,
List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Ongoing";
case 1:
return "Upcoming";
case 2:
return "Recent";
}
return null;
}
}
Индивидуальный класс представления списка (все три настраиваемых класса списка, как показано ниже)
public class Ongoing extends Fragment{
RelativeLayout ongoing_lay;
ListView ongoing_matches_lv;
ArrayList<Item> ongoing_matches = new ArrayList<Item>();
@Override
public View onCreateView(LayoutInflater inflater,final ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
ongoing_lay = (RelativeLayout) inflater.inflate(R.layout.ongoing, container, false);
return ongoing_lay;
}
}
Я не могу выяснить свою проблему. Может ли кто-нибудь помочь мне решить эту проблему.
1 ответ
Используйте getChildFragmentManager()
. вместо super.getActivity().getSupportFragmentManager()
при создании экземпляра адаптера в строке:
this.sfadp = new Schedule_fragment_adapter(super.getActivity().getSupportFragmentManager(), fragments);
ViewPager
. В опубликованном вами коде нет ничего очевидного, что могло бы предложить что-то проблемное.
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .