アクティビティと 3 つのフラグメントがあります。サポートタブには PagerSlidingTabStrip を使用します。アダプタ:
public class MyPagerAdapter extends FragmentStatePagerAdapter {
...
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
}
return null;
}
...
}
アクティビティ
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
final ViewPager pager = (ViewPager) findViewById(R.id.pager);
final MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
pager.setCurrentItem(1);
final int pageMargin = (int) applyDimension(COMPLEX_UNIT_DIP, 4, getResources().getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
tabs.setOnPageChangeListener(listener);
tabs.setTextColor(Color.rgb(255, 255, 255));
tabs.setIndicatorColor(Color.parseColor("#FF96AA39"));
}
アプリが最初に読み込まれるときgetItem
は、3 回実行されます。何が正しい。最初のフラグメントが表示されます。次に、変更後getItem
、最初のフラグメントのローレーションは実行されません。しかし、秒または 3 番目に切り替えると、getItem
実行されます。
画面の向きが変更されたときに最初のフラグメントに対して getItem が呼び出されない理由を教えてください。