C'è un modo semplice per stampare il contenuto di un Bundle
su Logcat se non si ricordano i nomi di tutti i tasti (anche essere in grado di stampare solo i nomi dei tasti sarebbe bello)?Stampa il contenuto di un pacchetto su Logcat?
Grazie!
C'è un modo semplice per stampare il contenuto di un Bundle
su Logcat se non si ricordano i nomi di tutti i tasti (anche essere in grado di stampare solo i nomi dei tasti sarebbe bello)?Stampa il contenuto di un pacchetto su Logcat?
Grazie!
Bundle#keySet() dovrebbe funzionare.
for (String key: bundle.keySet())
{
Log.d ("myApplication", key + " is a key in the bundle");
}
E se si desidera ottenere l'oggetto, è possibile utilizzare Bundle#get(String key)
(which is also in the same documentation I linked at the top of my answer). Tuttavia, tieni presente la chiamata generica get()
:
toString()
e tutto andrà bene. Tuttavia, se si desidera utilizzare effettivamente la coppia di chiavi, è necessario eseguire i controlli instanceof
per evitare di chiamare il metodo sbagliato.È possibile ottenere più specifica stampando il valore mappato come segue:
for (String key : bundle.keySet())
{
Log.d("Bundle Debug", key + " = \"" + bundle.get(key) + "\"");
}
Bundle a stringa convertitore:
public static String bundle2string(Bundle bundle) {
if (bundle == null) {
return null;
}
String string = "Bundle{";
for (String key : bundle.keySet()) {
string += " " + key + " => " + bundle.get(key) + ";";
}
string += " }Bundle";
return string;
}
Esempio di utilizzo:
Log.d(TAG,"details="+bundle2string(details));
e uscita:
details=Bundle{ RESPONSE_CODE => 5; }Bundle
Si noti che le frecce =>
e punto e virgola ;
consentono di menzionare gli spazi nelle chiavi e nei valori. Uno spazio prima della freccia, uno spazio dopo la freccia, nessuno spazio prima del punto e virgola, uno spazio dopo il punto e virgola, uno spazio dopo {
e uno spazio prima dello }
e tutti gli altri spazi ci sono perché sono nelle chiavi o valori.
Buona soluzione, ma preferisco usare un StringBuffer per prestazioni migliori: 'public static String bundle2string (Bundle bundle) { StringBuffer buf = new StringBuffer (" Bundle {"); per (Chiave stringa: bundle.keySet()) buf.append ("" + key + "=>" + bundle.get (chiave) + ";"); buf.append ("} Bundle"); return buf.toString(); } ' – Maurix
La prestazione IMO è irrilevante ai fini di _bundle2string() _, ma anche se supponiamo il contrario, in base a http://stackoverflow.com/a/4649160/755804, la concatenazione _String viene convertita in operazioni StringBuilder dal compiler._ Non l'ho controllato io per Android; se qualcuno si preoccupa di controllare questo, si prega di confermare o confutare. – 18446744073709551615
@ Maurix Poiché non ci sono thread coinvolti, StringBuilder è migliore di StringBuffer: https://developer.android.com/reference/java/lang/StringBuffer.html –
Penso che tu intendessi 'bundle.keySet()' (dato che il tuo collegamento dei documenti va bene); altrimenti è corretto – Eric
@Eric gah, errori stupidi. Almeno l'ho scritto correttamente quando l'ho collegato. –