打印一个包的内容到Logcat?
如果你不记得所有的键的名字(甚至能够打印只是键的名字会很酷)有一个简单的方法来打印一个Bundle
到Logcat的内容?
谢谢!
Bundle#keySet()应该可以工作。
for (String key: bundle.keySet()) { Log.d ("myApplication", key + " is a key in the bundle"); }
如果你想获得对象,你可以使用Bundle#get(String key)
(这也是我在我的答案顶部链接的文档) 。 但是,请记住使用通用get()
调用:
- 你正在使用Object。 如果你只是打印到一个日志,
toString()
将被调用,一切都会好起来的。 但是,如果您真的想要使用密钥对,则需要执行instanceof
检查以避免调用错误的方法。 - 由于toString将被调用,如果你有一个特殊的对象(例如ArrayLists,或者特殊的Serializable / Parcelable extras),你很可能不会从打印输出中获得任何有用的东西。
您可以通过打印映射的值来获得更具体的内容,如下所示:
for (String key : bundle.keySet()) { Log.d("Bundle Debug", key + " = \"" + bundle.get(key) + "\""); }
捆绑到string转换器:
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
请注意,箭头=>
和分号;
让你提及键和值的空间。 箭头前一个空格,箭头后一个空格,分号前一个空格,分号后一个空格, {
之后一个空格}
之后一个空格,以及所有其他空格,因为它们在键中或值。