Bundle
の内容をLogcatに簡単に印刷することはできますか?すべてのキーの名前が覚えていない場合でも(キー名だけを印刷することもクールです)バンドルの内容をLogcatに出力しますか?
ありがとうございます!
Bundle
の内容をLogcatに簡単に印刷することはできますか?すべてのキーの名前が覚えていない場合でも(キー名だけを印刷することもクールです)バンドルの内容をLogcatに出力しますか?
ありがとうございます!
Bundle#keySet()が有効です。
for (String key: bundle.keySet())
{
Log.d ("myApplication", key + " is a key in the bundle");
}
オブジェクトを取得する場合は、Bundle#get(String key)
(which is also in the same documentation I linked at the top of my answer)を使用できます。ただし、一般的なget()
コールを使用してください:
toString()
が呼び出され、すべて正常です。ただし、実際にキーのペアを使用する場合は、間違ったメソッドを呼び出さないようにinstanceof
のチェックを行う必要があります。次のようにマッピングされた値を印刷することで、より具体的な取得することができます。
for (String key : bundle.keySet())
{
Log.d("Bundle Debug", key + " = \"" + bundle.get(key) + "\"");
}
バンドルツー文字列コンバータ:
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;
}
使用例:
Log.d(TAG,"details="+bundle2string(details));
出力:
details=Bundle{ RESPONSE_CODE => 5; }Bundle
矢印=>
とセミコロン;
は、キーと値にスペースを記述できることに注意してください。矢印の前のスペース、矢印の後のスペース、セミコロンの前のスペース、セミコロンの後のスペース、{
の後のスペース、および}
の前のスペースまたは値。
良い解決策ですが、パフォーマンスを向上させるためにStringBufferを使用します。 'public static String bundle2string(バンドルバンドル){ StringBuffer buf = new StringBuffer(" Bundle {"); (String key:bundle.keySet())buf.append( "" + key + "=>" + bundle.get(key)+ ";"); buf.append( "バンドル"); 戻り値buf.toString(); } ' – Maurix
IMOのパフォーマンスは_bundle2string()_の目的とは無関係ですが、逆の場合でも、http://stackoverflow.com/a/4/49160/755804によれば_Stringの連結はStringBuilderオペレーションに変換されます。コンパイラ._私は自分自身をAndroidでチェックしなかった。誰かがこのことを気にしている場合は、確認してください。 – 18446744073709551615
@Maurix関連するスレッドがないため、StringBuilderはStringBufferよりも優れています。https://developer.android.com/reference/java/lang/StringBuffer.html –
私は 'bundle.keySet()'を意味すると思います(あなたのドキュメントのリンクは問題ないと思います)。それ以外の場合は正しいです。 – Eric
@エリック、愚かなエラー。私はそれにリンクしたとき、少なくとも私はそれを正しく綴りました。 –