2

アクティビティと 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 が呼び出されない理由を教えてください。

4

0 に答える 0