208 votes

Liste de tous les extras de l'Intention

Pour le débogage des raisons que je veux la liste de tous les extras (et leurs valeurs) d'une Intention. Maintenant, la remise des clés n'est pas un problème

Set<String> keys = intent.getExtras().keySet();

mais pour obtenir les valeurs des clés est l'un pour moi, parce que certaines valeurs sont des chaînes de caractères, certains sont boolean... Comment pourrais-je obtenir les valeurs dans une boucle (boucle sur les touches) et écrire les valeurs dans un fichier? Merci pour tout conseil!

403voto

kshahar Points 3014

Voici ce que j'ai utilisé pour obtenir des informations sur un sans-papiers (3e partie) intention:

for (String key : bundle.keySet()) {
    Object value = bundle.get(key);
    Log.d(TAG, String.format("%s %s (%s)", key,  
        value.toString(), value.getClass().getName()));
}

100voto

Pratik Points 475

C'est la façon dont je définis la méthode utilitaire de vider tous les extras de l'Intention.

 public static void dumpIntent(Intent i){

    Bundle bundle = i.getExtras();
    if (bundle != null) {
        Set<String> keys = bundle.keySet();
        Iterator<String> it = keys.iterator();
        Log.e(LOG_TAG,"Dumping Intent start");
        while (it.hasNext()) {
            String key = it.next();
            Log.e(LOG_TAG,"[" + key + "=" + bundle.get(key)+"]");
        }
        Log.e(LOG_TAG,"Dumping Intent end");
    }
}

8voto

nicholas.hauschild Points 21796

Le get(String key) méthode de Bundle retourne un Objet. Votre meilleur pari est de faire tourner sur la touche mise à l'appel de get(String) sur chaque touche et à l'aide de toString() sur l'Objet de leur sortie. Ce qui fonctionnera le mieux pour les primitives, mais vous pouvez rencontrer des problèmes avec des Objets qui ne mettent pas en œuvre les méthodes toString().

8voto

user123321 Points 2862
private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    tv = new TextView(this);
    tv.setText("Extras: \n\r");

    setContentView(tv);

    StringBuilder str = new StringBuilder();
    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        Set<String> keys = bundle.keySet();
        Iterator<String> it = keys.iterator();
        while (it.hasNext()) {
            String key = it.next();
            str.append(key);
            str.append(":");
            str.append(bundle.get(key));
            str.append("\n\r");
        }
        tv.setText(str.toString());
    }
}

2voto

Ben Williams Points 2892

Vous pouvez utiliser for (String key : keys) { Object o = get(key); de renvoyer un Objet, appelez - getClass().getName() sur elle pour obtenir le type, puis faire un jeu de si nom.equals("String") type de choses à travailler sur la méthode fait appel, afin d'obtenir la valeur?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: