この質問はstackoverflowで以前に尋ねられましたが、答えはどれもうまくいきませんでした。
おそらく言及する価値があります:
- サポート パッケージで ActionBarSherlock を使用しています。
onSaveInstanceState
ホームボタンを押すとメソッドISが呼び出されます。このメソッドonCreate
は、常に NULL を返しますBundle savedInstanceState
。- メソッド
onRestoreInstanceState
はまったく呼び出されません。(うまくいったかどうかは気にしませんonCreate
;))。 - また(関係ないはずですが)
super.onSaveInstanceState(outState)
の一番下に入れてみましたonSaveInstanceState
。運もありません。
これがコードです。誰かがこの問題を抱えて解決したことを願っています。
public class MainActivity extends SherlockFragmentActivity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private static String STATE_TO_STORE = "state_to_store";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(LOG_TAG, "onCreate: savedInstanceState = " + (savedInstanceState == null ? "NULL" : "Not NULL"));
// ... more code...
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.d(LOG_TAG, "onRestoreInstanceState: savedInstanceState = " + (savedInstanceState == null ? "NULL" : "Not NULL"));
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(STATE_TO_STORE, 5); // store some int
Log.d(LOG_TAG, "onSaveInstanceState bundle: " + outState.toString());
}
// ... more code ...
}
ログには、呼び出されていることが明確に示さonSaveInstanceState
れ、 onCreate gets が取得されますsavedInstanceState = NULL
。