web-dev-qa-db-fra.com

Android - Comment passer HashMap <String, String> entre les activités?

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");
......
......
37
Paresh Mayani

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.

63
st0le

Solution:

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");
57
Paresh Mayani

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.

3
MetaSnarf

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.

1
MattC

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();
1
VVB