0

私はAndroidアプリを開発しています。アクティビティで onSaveInstanceState イベントを使用してテストしています。しかし、onCreate イベントを取得すると、値の文字列が常に空であるため、期待どおりに動作しません。

これが私の活動です

@Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        outState.putString("message","Hello world!");
    }

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState!=null)
    {
        Toast.makeText(getBaseContext(),savedInstanceState.getString("message"),Toast.LENGTH_SHORT).show();
        //Log.i("DATA_FROM_STATE",savedInstanceState.getString("message"));
    }
}

アクティビティを実行して向きを変えると、常に空のメッセージが表示されます。ログ行のコメント解除をテストすると、データ文字列が空または null であるため、エラーが発生します。なぜ機能しないのですか?どうすれば正しく保存および取得できますか?

4

2 に答える 2

0

一見すると、データを保存する前にスーパーを呼び出していることがわかりました。メソッドを呼び出す必要があるため、アプリは Android の API21+ バージョンで実行されていると思います。

public void onSaveInstanceState (Bundle outState, PersistableBundle outPersistentState);

@Override
    public void onSaveInstanceState(Bundle outState,PersistableBundle outPersistentState) {
        outState.putString("message","Hello world!");
        super.onSaveInstanceState(outState, outPersistentState);

    }
于 2016-06-05T09:23:25.560 に答える