ViewPager в TabFragment не загружается второй раз
Я пытаюсь создать приложение, имеющее ViewPager в фрагменте, который является частью TabHost.
Все работает отлично. У меня есть табуляция, я могу переключить вкладки. Когда я переключаюсь на вкладку с помощью ViewPager, все отображается правильно. Но как только я покину эту вкладку с помощью ViewPager и верну эту вкладку, мой контент не будет показан. Если я дважды перейду в сторону, я увижу следующее изображение. И если я вернусь два раза, я также увижу, что изображения загружены (возможно, внеэкранный). Посмотрите, что мой TabFragment восстанавливается, когда я возвращаюсь к нему, но фрагменты в ViewPager не являются.
Я включил макет экрана и некоторые из моего кода.
Помогает ли кто-нибудь?
Ура!
@Override
public void onActivityCreated(Bundle savedInstanceState) {
mProjectText = (TextView) getView().findViewById(R.id.projectText);
mProjectText.setText(mActiveProject.getInspirationText());
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
mPager = (ViewPager)getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
super.onActivityCreated(savedInstanceState);
}
public class AlbumAdapter extends FragmentStatePagerAdapter {
private ArrayList<ProjectContent> mItems;
public AlbumAdapter(FragmentManager fm, ArrayList<ProjectContent> items) {
super(fm);
this.mItems = items;
}
@Override
public Fragment getItem(int position) {
return AlbumContentFragment.newInstance(mItems.get(position));
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}}
![The mockup for the app]()
Ответы
Ответ 1
Я нашел проблему. Это заняло у меня два дня, но эй, это исправлено.
Вместо использования
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
Вы должны использовать
mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());
Так много для 5 символов.
Ответ 2
Я искал
это надолго, наконец, нашли решение. Измените экземпляр адаптера страницы FragmentPagerAdapter
на FragmentStatePagerAdapter
Пример:
class PageAdapter extends FragmentStatePagerAdapter {
Ответ 3
Вы должны использовать getChildFragmentManager()
вместо getFragmentManager()
и FragmentStatePagerAdapter()
вместо FragmentPagerAdapter()
Надеюсь, это будет кому-то полезно.