Le site android.os.Message
utilise un Bundle
à envoyer avec sa méthode sendMessage. Par conséquent, est-il possible de mettre un HashMap
à l'intérieur d'un Bundle
?
Réponses
Trop de publicités?Essayer comme :
Bundle extras = new Bundle();
extras.putSerializable("HashMap",hashMap);
intent.putExtras(extras);
et en deuxième activité
Bundle bundle = this.getIntent().getExtras();
if(bundle != null) {
hashMap = bundle.getSerializable("HashMap");
}
parce que Hashmap par défaut implémente Serializable
vous pouvez donc le passer en utilisant putSerializable
dans Bundle et entrer dans une autre activité en utilisant getSerializable
Remarque : si vous utilisez une AppCompatActivity, vous devrez appeler la fonction protected void onSaveInstanceState(Bundle outState) {}
( PAS public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {}
).
Exemple de code...
Enregistrez la carte :
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("leftMaxima", leftMaxima);
outState.putSerializable("rightMaxima", rightMaxima);
}
Et le recevoir dans onCreate :
if (savedInstanceState != null) {
leftMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("leftMaxima");
rightMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("rightMaxima");
}
Désolé si c'est une sorte de réponse en double - peut-être que quelqu'un la trouvera utile :)
public static Bundle mapToBundle(Map<String, Object> data) throws Exception {
Bundle bundle = new Bundle();
for (Map.Entry<String, Object> entry : data.entrySet()) {
if (entry.getValue() instanceof String)
bundle.putString(entry.getKey(), (String) entry.getValue());
else if (entry.getValue() instanceof Double) {
bundle.putDouble(entry.getKey(), ((Double) entry.getValue()));
} else if (entry.getValue() instanceof Integer) {
bundle.putInt(entry.getKey(), (Integer) entry.getValue());
} else if (entry.getValue() instanceof Float) {
bundle.putFloat(entry.getKey(), ((Float) entry.getValue()));
}
}
return bundle;
}
- Réponses précédentes
- Plus de réponses