Android 保存查看页导航的当前页面

Android 保存查看页导航的当前页面,android,android-viewpager,orientation,Android,Android Viewpager,Orientation,我有一个纵向模式的视图寻呼机。在景观模式上,我有完全不同的布局。从横向回到纵向后,我想看看viewpager最后一次看到的页面。但第一页总是在屏幕上 这是我的密码: public class MainActivity extends FragmentActivity { public static ViewPager pager=null; public static FragmentAdapter adapter; PageIndicator mIndicator;

我有一个纵向模式的视图寻呼机。在景观模式上,我有完全不同的布局。从横向回到纵向后,我想看看viewpager最后一次看到的页面。但第一页总是在屏幕上

这是我的密码:

public class MainActivity extends FragmentActivity {

    public static ViewPager pager=null;
    public static FragmentAdapter adapter;
    PageIndicator mIndicator;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_delict);
        if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){
                pager = (ViewPager) findViewById(R.id.pager);
                adapter = new FragmentAdapter(getSupportFragmentManager());
                pager.setOffscreenPageLimit(4);
                pager.setAdapter(adapter);
                mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
                mIndicator.setViewPager(pager);
                mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        Toast.makeText(MainActivity.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                    }

                    @Override
                    public void onPageScrollStateChanged(int state) {
                    }
                });
            }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.delict, menu);
        return true;
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){
            if(pager!=null){
                outState.putInt("PAGE", pager.getCurrentItem());
            }
        }

    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        if(pager!=null){
         pager.setCurrentItem(savedInstanceState.getInt("PAGE"));
        }
    }
}

我目前没有打开IDE,因此可能需要修改语法:

@Override
protected void onSaveInstanceState(Bundle bundle) {
  super.onSaveInstanceState(bundle);
  bundle.putInt("currentItem", pager.getCurrentItem());
}

public void onCreate(Bundle savedInstanceState) {

    ...

    if (savedInstanceState != null) {
        pager.setCurrentItem(savedInstanceState.getInt("currentItem", 0));
    }
}

为什么只在纵向模式下构建ViewPager?这是应用程序的设计。对于横向模式,应用程序设计是完全不同的。公平地说,在
findViewById(R.id.pager)
之后检查寻呼机是否为空会更简单。