他のアクティビティに移動して戻るときにHashMapの値を保持しようとしています。これは私の今のコードです。Android HashMapがアクティビティに戻るときに永続しない
HashMapは動作し、ビュー内のEditTextからデータを取得して保存できます。しかし、すぐに私が活動し、リターンから去るよう、HashMapのは、空にするために再初期化され
- > {}
私はマニュアルを見てきましたし、変数のデータであることを保証するのが正しい方法であると思われます持続した。しかし、それは動作しません。
私が問題に何ができるか教えてください:
public class ScriptActivity extends MainActivity {
HashMap timeAndMessages;
EditText message;
EditText time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_script);
if (savedInstanceState != null) {
timeAndMessages = (HashMap) savedInstanceState.getSerializable("alerts");
} else {
timeAndMessages = new HashMap();
}
message = (EditText)findViewById(R.id.messageText);
time = (EditText)findViewById(R.id.timeText);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
restore(savedInstanceState);
}
private void restore(Bundle savedInstanceState) {
if (savedInstanceState != null) {
timeAndMessages = (HashMap) savedInstanceState.getSerializable("alerts");
}
}
public void createMessage (View view){
String stringmessage = message.getText().toString();
int inttime = Integer.parseInt(time.getText().toString());
timeAndMessages.put(inttime, stringmessage);
Toast.makeText(getApplicationContext(), "Will display : " + stringmessage + " At time : " + Integer.toString(inttime) , Toast.LENGTH_LONG).show();
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outState.putSerializable("alerts", timeAndMessages);
}
}
まず、 'restore()'メソッドが表示されません。次に、onSaveInstanceState()メソッドはAPIレベル21以降のデバイスでのみ使用されます。 'minSdkVersion'が21より小さい場合には' onSaveInstanceState() 'バージョンでは' Bundle'だけが必要です。第3に、これらのインスタンス状態は任意のシナリオではなく、特定のもの(設定変更など)です。あなたの質問を編集して、「アクティビティをナビゲートする」という意味を説明してください。 – CommonsWare
"timeAndMessages"宣言と初期化コードを投稿してください。そして、それがユーザー定義のオブジェクトのコレクションであれば、そのPOJOも投稿してください。 –
@CommonsWare APIレベルは23です。outPersistentStateの追加/削除はコードに影響しないようです。 –