程序代码片段中ViewPager视图里含有WebViews。当我旋转手机时,ViewPager总显示第一个页面。这是因为活动和片段又被重新创建。如何保存ViewPager的状态不让活动和片段重新创建呢?下面的代码不能正常执行。
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
{
int pos = savedInstanceState.getInt("currentPosition");
this.setSelectedItem(pos);
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt("currentPosition", positionOfSelectedIndex);
}
如果改变了系统屏幕的设置方向
会触发onConfigurationChanged事件
重写,将当前状态在其内进行处理
它是关于如何创建你的FragmentActivity(主机活动)。似乎不能保存viewpager的状态,但你可以保存viewpager'适配器中fragments的状态。你也可以同样的方式保存一些内部数据片段。同样,如果你不想适配器自动摧毁视图 (当你刷新viewpager),重写适配器的摧毁方法。
在片段的构造函数中添加:
setRetainInstance(true);
如果你有很多构造函数,要确保这些是无参的构造函数,每个其它的构造函数都调用
this();
然后在 FragmentActivity中实例化 PageAdapter,加入以下代码:
myPager = (ViewPager)findViewById(R.id.pager);
myAdapter = new MyPagerAdapter(anyParamsYouMightHave);
myPager.setAdapter(myAdapter);
myPageAdpater.setCurrentItem(indexOfSomePointYouWishToReturnTo);