У меня есть FragmentActivity, который загружает 3 фрагмента в представлении пейджера. При каждой новой установке второй фрагмент загружается, но вскоре после него становится черным. После этого второй фрагмент перезагружается и работает нормально даже при просмотре представлений. Таким образом, он становится черным только в первый раз, когда он загружен. Я реализовал это с помощью FragmentPagerAdapter и FragmentStatePagerAdapter, но он ведет себя одинаково. Это происходит только для KitKat и Lollipop. Все фрагменты имеют простые макеты, без вложенных фрагментов.Черный фрагмент при загрузке в первый раз в ViewPager
public class IntroActivity extends FragmentActivity {
private List<Fragment> listFragments;
private PagerAdapter pagerAdapterWelcome;
private OnboardingPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intro_pager);
viewPager = (OnboardingPager) findViewById(R.id.viewPager);
//Initializing the List
listFragments = new ArrayList<Fragment>();
//initializing the fragments
WelcomeFragment welcomeFragment = new WelcomeFragment();
TicketScanFragment ticketOptionScanFragment = new TicketScanFragment();
ScannerFragment scanFragment = new ScannerFragment();
//Adding Fragments to List
listFragments.add(welcomeFragment);
listFragments.add(ticketOptionScanFragment);
listFragments.add(scanFragment);
//initializing PagerAdapter
pagerAdapterWelcome = new PagerAdapter(getSupportFragmentManager(), listFragments);
viewPager.setAdapter(pagerAdapterWelcome);
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots);
tabLayout.setupWithViewPager(viewPager, true);
}
адаптер:
public class PagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> listFragments;
public PagerAdapter(FragmentManager fm, List<Fragment> listFragments) {
super(fm);
this.listFragments = listFragments;
}
@Override
public Fragment getItem(int i) {
return listFragments.get(i);
}
@Override
public int getCount() {
return listFragments.size();
}
}
Это работает только в том случае, если вы не пытаетесь выполнить setCurrentItem. Я пытаюсь использовать это, а также показывать позицию 1 при запуске. –