フラグメントをインスタンス化するときは、 を呼び出しますsetRetainInstance(true)
。これにより、フラグメントのインスタンスの状態が保持されます。onCreateView
は引き続き呼び出され、保存された状態を再利用し、データを再度ロードせずにビューをレンダリングするだけであることを確認する必要があります。たとえばboolean
、フラグメントが既に初期化されているかどうかを表すために a を使用します。
次のようにします。
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()
。自動的に処理されます。