Я использую 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
Yugesh 28 Мар 2014 в 14:48
Вы пробовали использовать фрагменты списка?
 – 
playmaker420
28 Мар 2014 в 14:56
У меня была аналогичная проблема, когда я возвращался из последнего фрагмента, первый фрагмент уйдет и перезагрузится. Я извлекал данные из базы данных и заполнял их в списке.
 – 
playmaker420
28 Мар 2014 в 15:00
Вы получили решение проблемы?
 – 
Yugesh
28 Мар 2014 в 15:01
Да, по моему требованию, это сработало. Может быть, это исправят
 – 
playmaker420
28 Мар 2014 в 15:09
Увидеть, как Luksprog отвечает на свою работу правильно.
 – 
Yugesh
28 Мар 2014 в 15:12

1 ответ

Лучший ответ

Используйте getChildFragmentManager() . вместо super.getActivity().getSupportFragmentManager() при создании экземпляра адаптера в строке:

this.sfadp  = new Schedule_fragment_adapter(super.getActivity().getSupportFragmentManager(), fragments);
11
user 28 Мар 2014 в 15:08
Спасибо. Работает нормально. У меня есть еще одно сомнение. Когда я пролистываю этот пейджер. Это было немного медленно. Как я могу его улучшить.
 – 
Yugesh
28 Мар 2014 в 15:14
Либо улучшите свои макеты (чтобы было меньше представлений и неглубокая иерархия представлений), либо проверьте, не выполняете ли вы тяжелую инициализацию во фрагментах, которые используются в ViewPager. В опубликованном вами коде нет ничего очевидного, что могло бы предложить что-то проблемное.
 – 
user
28 Мар 2014 в 15:19