Comment passer le detail
HashMap à une autre activité?
HashMap<String,String> detail = new HashMap<String, String>();
detail.add("name","paresh");
detail.add("surname","mayani");
detail.add("phone","99999");
......
......
C'est assez simple, tous les objets Collections
implémentent Serializable
(sp?) interface
ce qui signifie qu'ils peuvent être passés en tant qu'extras dans Intent
Utilisez putExtra(String key, Serializable obj)
pour insérer le HashMap
et de l'autre Activity
utilisez getIntent().getSerializableExtra(String key)
, vous devrez convertir la valeur de retour en HashMap
bien que.
Activité de l'expéditeur:
HashMap<String, String> hashMap= adapter.getItem(position);
Intent intent = new Intent(SourceActivity.this, DestinationActivity.class);
intent.putExtra("hashMap", hashMap);
startActivity(intent);
Activité du récepteur:
Intent intent = getIntent();
HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("hashMap");
je l'ai utilisé pour passer mon HashMap
startActivity(new Intent(currentClass.this,toOpenClass.class).putExtra("hashMapKey", HashMapVariable));
et sur l'activité de réception, écrivez
HashMap<String,String> hm = (HashMap<String,String>) getIntent().getExtras().get("hashMapKey");
cuz je sais que mon hashmap contient une chaîne comme valeur.
Une alternative est si l'information est quelque chose qui peut être considérée comme "globale" pour l'application, alors utiliser la classe Application . Vous l'étendez simplement, puis définissez votre classe personnalisée dans votre manifeste à l'aide de la balise <application>. Cependant, utilisez-le avec parcimonie. L'envie d'en abuser est grande.
Ici, je montre un exemple de code pour votre référence. Je viens d'essayer ce code, cela fonctionne bien pour moi. Vérifie ça :
Activité principale :
final HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1, "Hi");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("h", hashMap);
startActivity(intent);
}
});
SecondActivity:
Toast.makeText(SecondActivity.this,"Hi " + getIntent().getSerializableExtra("h").toString(),Toast.LENGTH_SHORT).show();