更改方向后不调用FragmentStatePagerAdapter getItem方法

时间:2014-02-23 17:10:58

标签: android fragmentstatepageradapter

我有活动和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次。什么是正确的。显示第一个片段。然后在更改后,不执行第一个片段的ro getItem。但当我切换到secons或第三个getItem被执行时。

你可以帮我解释为什么在屏幕方向改变时没有为第一个片段调用getItem吗?

0 个答案:

没有答案