私はビューページャーで3つのフラグメントを読み込むFragmentActivityを持っています。新しくインストールされるたびに、2番目のフラグメントがロードされますが、すぐに黒になります。この後、2番目のフラグメントがリロードされ、ビューをスワイプしている間も正常に機能します。それで、最初にロードされたときだけ黒くなります。私はこれをFragmentPagerAdapterとFragmentStatePagerAdapterを使って実装しましたが、同じ動作をします。これは、KitKatとLollipopでのみ発生します。すべてのフラグメントは単純なレイアウトで、ネストされたフラグメントはありません。ここViewPagerで最初に読み込まれたときの黒いフラグメント
//initializing PagerAdapter
pagerAdapterWelcome = new PagerAdapter(getChildFragmentManager(), listFragments);
:
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を表示するようにしています。 –