30

Я пытаюсь создать приложение, которое имеет ViewPager в фрагменте, который является частью TabHost.ViewPager в TabFragment не загружается второй раз

Все работает отлично. У меня есть табуляция, я могу переключить вкладки. Когда я переключаюсь на вкладку с помощью ViewPager, все отображается правильно. Но как только я покину эту вкладку с помощью ViewPager и верну эту вкладку, мой контент не будет показан. Если я дважды перейду в сторону, я увижу следующее изображение. И если я вернусь два раза, я также увижу, что изображения загружены (возможно, внеэкранный). Посмотрите, что мой TabFragment восстанавливается, когда я возвращаюсь к нему, но фрагменты в ViewPager нет.

Я включил макет экрана и некоторые из моего кода.

Может ли кто-нибудь помочь?

Cheers!

@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

ответ

111

Я нашел проблему. Мне потребовались два дня, но, эй, это исправлено.

Вместо использования

mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration()); 

Вы должны использовать

mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration()); 

Так много для 5 символов.

+7

спасибо вы просто спасли меня кучу времени –

+7

Спасибо за спасение моего дня .. . :) –

+8

Человек, которого вы никогда не знаете, как вы спасли мою задницу сегодня вечером! – Anik

24

Я искал это долго, наконец, нашел solution.Change вашей страницы экземпляра адаптера FragmentPagerAdapter к FragmentStatePagerAdapter примера:

class PageAdapter extends FragmentStatePagerAdapter { 
+0

Чем вы, после FragmentPagerAdapter для FragmentStatePagerAdapter, он работает. Это простой и короткий ответ. – Ravikumar11

+1

Спасибо. Потрачено много времени на эту проблему, и ваши простые изменения сработали. –

+0

Вы буквально спасли мой 99-й год !!! –

Смежные вопросы