Hallo, du sendest welchen Wert (int, string, double ..)?
Naresh
bedeutet Zeichenfolge Wert, den ich senden möchte
Piyush
@Piyush .. zusätzlich JesusFrekes Antwort dies tun, um Werte zu erhalten, String [] val = new String [hashMap.size]; (hasMap.values) .toArray (val);
Ngesh
Wir können keine Hash-Map direkt per Absicht senden. Für die alternative Erstellung von zwei Array-Listen dient eine zum Halten von Schlüsseln und die andere zum Halten von Werten. Senden Sie nun diese beiden Array-Listen per Intent. In der anderen Klasse erhalten Sie zwei Array-Listen. Erstellen Sie nun eine leere Hashmap und fügen Sie den Schlüsselwert hinzu. Um eine Schlüssel- und Werteschleife für Ihre Schlüssel-Arrayliste zu erhalten, erhalten Sie einen Wert aus der Werte-Arrayliste.
ilango j
Antworten:
201
Die HashMap-Klasse von Java erweitert die SerializableSchnittstelle, wodurch es einfach ist, sie mithilfe der Intent.putExtra(String, Serializable)Methode einer Absicht hinzuzufügen .
In dem Aktivitäts- / Dienst- / Rundfunkempfänger, der die Absicht empfängt, rufen Sie dann
Intent.getSerializableExtra(String)mit dem Namen auf, den Sie mit putExtra verwendet haben.
Zum Beispiel beim Senden der Absicht:
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("key", "value");
Intent intent = new Intent(this, MyOtherActivity.class);
intent.putExtra("map", hashMap);
startActivity(intent);
Beachten Sie, dass HashMaps serialisiert werden. Karten anscheinend nicht.
R Earle Harris
5
Map ist eine Schnittstelle - Sie können eine Schnittstelle nicht serialisieren, sondern nur eine bestimmte Implementierung. In diesem Fall implementiert / erweitert Map die Serializable-Schnittstelle nicht selbst. Es liegt also an der spezifischen Implementierung, ob Serializable implementiert werden soll oder nicht. Und HashMap implementiert es.
JesusFreke
1
Hallo, ich sende eine HashMap <String, Object> als serialisierbares Extra aus einer Aktivität, die ich als Ergebnis einer anderen Aktivität gestartet habe. Also gebe ich eine Absicht zum Ergebnis zurück. Wenn ich versuche, die HashMap aus der Absicht abzurufen, (HashMap <String, Object>) intent.getSerializableExtra ("map"); gibt null zurück. Liegt es daran, dass ich HashMap <String, Object> verwende oder dass ich es von einer Aktivität sende, die für das Ergebnis einer anderen Aktivität erstellt wurde?
Marienke
1
@marienke Ich habe HashMap <String, Object> auf diese Weise in meinem Projekt verwendet und es funktioniert gut. Ich denke, Ihr Problem ist wahrscheinlich das letztere, viel Glück.
Antworten:
Die HashMap-Klasse von Java erweitert die
Serializable
Schnittstelle, wodurch es einfach ist, sie mithilfe derIntent.putExtra(String, Serializable)
Methode einer Absicht hinzuzufügen .In dem Aktivitäts- / Dienst- / Rundfunkempfänger, der die Absicht empfängt, rufen Sie dann
Intent.getSerializableExtra(String)
mit dem Namen auf, den Sie mit putExtra verwendet haben.Zum Beispiel beim Senden der Absicht:
HashMap<String, String> hashMap = new HashMap<String, String>(); hashMap.put("key", "value"); Intent intent = new Intent(this, MyOtherActivity.class); intent.putExtra("map", hashMap); startActivity(intent);
Und dann in der empfangenden Aktivität:
protected void onCreate(Bundle bundle) { super.onCreate(savedInstanceState); Intent intent = getIntent(); HashMap<String, String> hashMap = (HashMap<String, String>)intent.getSerializableExtra("map"); Log.v("HashMapTest", hashMap.get("key")); }
quelle
Ich hoffe das muss auch funktionieren.
in der Sendeaktivität
Intent intent = new Intent(Banks.this, Cards.class); intent.putExtra("selectedBanksAndAllCards", (Serializable) selectedBanksAndAllCards); startActivityForResult(intent, 50000);
in der empfangenden Aktivität
Intent intent = getIntent(); HashMap<String, ArrayList<String>> hashMap = (HashMap<String, ArrayList<String>>) intent.getSerializableExtra("selectedBanksAndAllCards");
Wenn ich eine HashMap wie folgt sende,
Map<String, ArrayList<String>> selectedBanksAndAllCards = new HashMap<>();
Hoffe es würde jemandem helfen.
quelle