8

アプリケーションでは、フラグメントがフォーカスを失う (つまり、別のアクティビティ/フラグメントがその上で開かれる)たびにonSaveInstanceState()呼び出されます。

同じことが開発者ガイドにも記載されています。

このアプローチを使用して、フラグメントが再開されるたびにフラグメントの状態を維持しようとしています。私の意図は、フラグメントが再開されたときにこれbundleを呼び出すことでした。onActivityCreated()

フラグメントがonSaveInstanceStateフォーカスを失う前に呼び出されますが。ただし、onActivityCreated()が呼び出されると、Bundle savedInstanceStatenull として受け取ります。

バンドルからデータを取得するにはどうすればよいですか。

コード:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    MyListAdapter adapter = new MyListAdapter(getActivity(),
            R.layout.my_row, titles, icons, this);

    setListAdapter(adapter);

    if (savedInstanceState != null) {
        // Never goes inside this condiiton.
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}
4

1 に答える 1