打印一个包的内容到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 

请注意,箭头=>和分号; 让你提及键和值的空间。 箭头前一个空格,箭头后一个空格,分号前一个空格,分号后一个空格, {之后一个空格}之后一个空格,以及所有其他空格,因为它们在键中或值。