Android setOffscreenPageLimit(int)不';不要在屏幕旋转上工作
我正在尝试保存Android setOffscreenPageLimit(int)不';不要在屏幕旋转上工作,android,android-viewpager,Android,Android Viewpager,我正在尝试保存查看页面中包含的表单数据。当我处于横向模式时,它工作正常,但当我旋转屏幕时,所有数据都消失了,字段再次为空。如何处理 我在其中调用viewpager的片段: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.infla
查看页面
中包含的表单数据。当我处于横向
模式时,它工作正常,但当我旋转屏幕时,所有数据都消失了,字段再次为空。如何处理
我在其中调用viewpager的片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main,
container, false);
mViewPager = (ViewPager)rootView.findViewById(R.id.pager);
mAdapter = new MyFragmentPagerAdapter1(getChildFragmentManager());
mViewPager.setOffscreenPageLimit(6);
new setAdapterTask().execute();
return rootView;
}
private class setAdapterTask extends AsyncTask<Void,Void,Void>{
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
mViewPager.setAdapter(mAdapter);
}
}
您是否尝试过使用
setRetainInstance(true)
保留片段的实例?解决方案只是将数据保存在onSaveInstanceState(Bundle outState)
中,并将其加载到创建的视图中
您应该设置setRetainInstance(true)
在您的片段
声明中。我也尝试了,我得到了无法保留嵌套在其他片段中的片段的命令,例外情况为什么要使用AsyncTask?你的片段是否在另一个片段中?您可以发布更多代码吗?为了在包含在主/详细流中的片段中显示viewpager,AsyncTask
主要用于在其doInBackground()上执行后台任务。你没有使用它onPostExecute()
在UI线程上运行,因此它与直接从onCreateView()
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
Part1 p1= new Part1();
p1.setRetainInstance(true);
return p1;
case 1:
return new part2();
default:
return null;
}
}