Android HashMap dans Bundle?

The android.os.Message utilise un Bundle à envoyer avec sa méthode sendMessage. Par conséquent, est-il possible de mettre un HashMap dans un Bundle ?

  • Comment obtenir un projet PhoneGap à exécuter dans Android Studio avec Gradle Build System
  • Comment puis-je changer la sonnerie dans Android de manière programmée?
  • Comment récupérer un Facebook-AuthToken à partir des comptes enregistrés sur Android
  • Paramètre de poste de réaménagement
  • Android Studio Javadoc: impossible de trouver un symbole
  • Comment ajouter un service système au cadre Android
  • AutocomplèteTexpression et finitionHintView
  • Android Animation l'un après l'autre
  • ERROR obtenant l'attribut 'android: label': l'attribut n'est pas une valeur de chaîne
  • Comment calculer un rayon autour d'un point dans un MapView Android?
  • Désassembler le code de type inconnu
  • Communiquer directement entre deux appareils mobiles
  • 4 Solutions collect form web for “Android HashMap dans Bundle?”

    Essayez comme:

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

    Et dans la deuxième activité

     Bundle bundle = this.getIntent().getExtras(); if(bundle != null) { hashMap = bundle.getSerializable("HashMap"); } 

    Parce que Hashmap par défaut implémente Serializable afin que vous puissiez le transmettre en utilisant putSerializable dans Bundle et obtenir une autre activité en utilisant getSerializable

    Selon le document , Hashmap implémente Serializable , de sorte que vous pouvez mettre en putSerializable je suppose. L'AS-tu essayé ?

    Si vous souhaitez envoyer toutes les clés dans le paquet, vous pouvez essayer

     for(String key: map.keySet()){ bundle.putStringExtra(key, map.get(key)); } 

    Remarque: si vous utilisez AppCompatActivity, vous devrez appeler la protected void onSaveInstanceState(Bundle outState) {} ( NOT public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {} ).

    Exemple de code …

    Rangez la carte:

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

    Et recevez-le sur Recréer:

     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 le trouvera utile. 🙂

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.