Android:旋转后的ViewPager屏幕错误

Android:旋转后的ViewPager屏幕错误,android,android-fragments,rotation,swipe,Android,Android Fragments,Rotation,Swipe,我有一个很奇怪的问题。 在我的活动中,我有ViewPager,因为我想显示不同的屏幕。 每个屏幕都必须显示自己的字符串。 我的想法是创建一个activity、一个ViewPager和一个片段,其中包含逻辑和关于必须显示哪个字符串的信息 这是我的活动: private PagerAdapter pagerAdapter; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstance

我有一个很奇怪的问题。 在我的活动中,我有ViewPager,因为我想显示不同的屏幕。 每个屏幕都必须显示自己的字符串。 我的想法是创建一个activity、一个ViewPager和一个片段,其中包含逻辑和关于必须显示哪个字符串的信息

这是我的活动:

private PagerAdapter pagerAdapter;
private ViewPager mViewPager;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.wizard_layout);

        pagerAdapter = new PagerAdapter(getFragmentManager());
        maxPages = pagerAdapter.getCount();

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(pagerAdapter);    

        mViewPager.setOnPageChangeListener(this);
    }
这是我的寻呼机适配器

public class PagerAdapter extends FragmentPagerAdapter {
        public PagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
                return StepWelcomeFragment.newInstance(position);
            }
            return null;             
        }

        @Override
        public int getCount() {
            return 5;
        }
    }
这是我唯一的一个片段

public static class StepWelcomeFragment extends Fragment {
        private int sectionNumber;

        private static final String ARG_SECTION_NUMBER = "section_number";

        public static StepWelcomeFragment newInstance(int sectionNumber) {
            StepWelcomeFragment fragment = new StepWelcomeFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            fragment.sectionNumber = sectionNumber;
            return fragment;
        }

        public StepWelcomeFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.wizard_welcome_step_layout,
                    container, false);
            switch(sectionNumber){
            case 0:     
                showString0(); break;

            case 1:
                showString1(); break;   

            case 2:
                showString2(); break;

            case 3:
                showString3(); break;

            case 4:
                showString4(); break; 
            default: break;
            }                       
            return rootView;        
        }
    } 
我使用变量
sectionNumber
来存储(片段本身内部)关于哪个屏幕有焦点的信息

它很好用。 但是,当我旋转设备时,活动被破坏并重新创建(正常情况下),但我在屏幕上看到的总是0。 无论我是否浏览屏幕滑动,在每个新屏幕中(再次旋转后)都只显示String0<代码>区段编号连续为0。 此外,即使没有保存状态,当我旋转显示当前屏幕时,我的期望是,旋转后应显示屏幕0(我错了吗?)。 活动似乎不会重新创建新适配器和新片段。 我做错了什么? 为什么在旋转之后,活动没有被正确地终止和重新创建? 我不想保存任何数据,对我来说,销毁和重建是可以的,但为什么不呢? 非常感谢

好的,我买了我自己的。 加起来就够了

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        /* Save which screen in visible */
        //super.onSaveInstanceState(outState);
        outState.putInt(currentViewTag, mViewPager.getCurrentItem());
    } 
但是没有
super.onSaveInstanceState(超出状态)否则它会保存视图状态,而不是从头开始重新创建视图