97

は、 sendMessage メソッドで送信するために をandroid.os.Message使用します。したがって、 a の中に aBundleを入れることは可能ですか?HashMapBundle

4

7 に答える 7

176

次のようにしてみてください:

Bundle extras = new Bundle();
extras.putSerializable("HashMap",hashMap);
intent.putExtras(extras);

そして2番目のアクティビティで

Bundle bundle = this.getIntent().getExtras();

if(bundle != null) {
   hashMap = bundle.getSerializable("HashMap");
}

Hashmap はデフォルトで実装されているため、Bundleで使用して渡し、を使用して他のアクティビティに参加できます。SerializableputSerializablegetSerializable

于 2012-07-12T13:35:43.013 に答える
13

ドキュメントによると、Hashmap実装するので、推測Serializableできます。putSerializable試してみましたか?

于 2012-07-12T13:29:37.507 に答える
6

注意: AppCompatActivity を使用している場合は、 protected void onSaveInstanceState(Bundle outState) {}( NOT public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {} ) メソッドを呼び出す必要があります。

サンプルコード...

マップを保存します。

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("leftMaxima", leftMaxima);
    outState.putSerializable("rightMaxima", rightMaxima);
}

そしてそれを onCreate で受け取ります:

if (savedInstanceState != null) {
    leftMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("leftMaxima");
    rightMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("rightMaxima");
}

重複した回答の場合は申し訳ありません-誰かが役に立つと思うかもしれません。:)

于 2016-08-23T06:06:48.667 に答える
4

バンドル内のすべてのキーを送信する場合は、試すことができます

for(String key: map.keySet()){
    bundle.putStringExtra(key, map.get(key));
}
于 2015-10-24T18:57:05.780 に答える