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 réparer une "base de données SQLiteConnection pour gms" qui a été divulguée
  • Comment l'application Facebook mesure les applications - Android / IOS
  • Message d'avertissement Google Play et OpenSSL
  • Android NDK, deux bibliothèques statiques et liens
  • Puis-je avoir onScrollListener pour ScrollView?
  • Comment obtenir la taille de la boîte de dialogue?
  • Android: Fragment superposer un autre fragment avec semi transparent
  • Comment obtenir une liste des entrées de fragments de backstack dans Android?
  • Est-il sécuritaire d'utiliser .getWidth on Display même s'il est obsolète?
  • Le processus Android produit le message "mort" de Logcat très souvent.
  • Comment pouvez-vous déplacer cette boîte de culture native buggy dans une application hybride?
  • Écriture d'une application pour Android et iOS
  • 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.