我有一个带有WebViews的ViewPager片段。当我旋转手机时,ViewPager会显示第一页。这是因为活动和片段再次创建。我如何保存ViewPager的状态。以下代码不起作用
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
{
// Restore last state for checked position.
int pos = savedInstanceState.getInt("currentPosition");
this.setSelectedItem(pos);
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt("currentPosition", positionOfSelectedIndex);
}
答案 0 :(得分:3)
在片段的构造函数中输入以下内容:
setRetainInstance(true);
如果你有多个构造函数,你需要确保它在默认的no-args构造函数中,然后确保每个其他构造函数调用
this();
然后在实例化PageAdapter的FragmentActivity中添加以下行:
myPager = (ViewPager)findViewById(R.id.pager);
myAdapter = new MyPagerAdapter(anyParamsYouMightHave);
myPager.setAdapter(myAdapter);
myPageAdpater.setCurrentItem(indexOfSomePointYouWishToReturnTo);
标记
答案 1 :(得分:1)
关于如何创建FragmentActivity(主机活动)的全部内容。您似乎无法保存viewpager的状态,但您可以保存推送到viewpager适配器的片段状态。你也可以在片段中保存一些数据(同样的方式)。此外,如果你不希望适配器自动销毁视图(当你滑动viewpager时),覆盖适配器的destroy方法,没有超级。通过代码和简单的解决方案查看我的问题:ViewPager and fragments — what's the right way to store fragment's state?