当您实例化片段时,调用setRetainInstance(true)
. 这将保留片段的实例状态。onCreateView
仍然会被调用,您需要确保重新使用已保存的状态并仅渲染视图而不再次加载任何数据,例如,使用 aboolean
表示您的片段是否已被初始化。
你会做这样的事情:
public static class MyAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
MyFragment myFragment = new MyFragment();
myFragment.setRetainInstance(true);
return myFragment;
}
}
class MyFragment extends Fragment {
.
.
.
boolean initialized = false;
ArrayList<MyData> myData = null;
void onCreate(...) {
if (initialized) {
renderViews();
} else {
initialized = true;
loadData();
renderViews();
}
}
}
您不需要实施onSaveInstanceState()
. 它将被自动处理。