Có cách nào dễ dàng để in nội dung của một Bundle
tới Logcat nếu bạn không thể nhớ tên của tất cả các phím (thậm chí có thể in chỉ các tên khóa sẽ được làm mát)?In nội dung của một Bundle để Logcat?
Cảm ơn!
Có cách nào dễ dàng để in nội dung của một Bundle
tới Logcat nếu bạn không thể nhớ tên của tất cả các phím (thậm chí có thể in chỉ các tên khóa sẽ được làm mát)?In nội dung của một Bundle để Logcat?
Cảm ơn!
Bundle#keySet() sẽ hoạt động.
for (String key: bundle.keySet())
{
Log.d ("myApplication", key + " is a key in the bundle");
}
Và nếu bạn muốn lấy Object, bạn có thể sử dụng Bundle#get(String key)
(which is also in the same documentation I linked at the top of my answer). Tuy nhiên, hãy nhớ sử dụng lệnh gọi chung số get()
:
toString()
sẽ được gọi và tất cả sẽ ổn. Tuy nhiên, nếu bạn thực sự muốn sử dụng cặp khóa, bạn cần thực hiện instanceof
kiểm tra để tránh gọi phương thức sai.Bạn có thể nhận cụ thể hơn bằng cách in các giá trị ánh xạ như sau:
for (String key : bundle.keySet())
{
Log.d("Bundle Debug", key + " = \"" + bundle.get(key) + "\"");
}
Bundle-to-string chuyển đổi:
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;
}
Ví dụ sử dụng:
Log.d(TAG,"details="+bundle2string(details));
và đầu ra:
details=Bundle{ RESPONSE_CODE => 5; }Bundle
Lưu ý rằng các mũi tên =>
và dấu chấm phẩy ;
cho phép bạn đề cập đến khoảng trắng trong khóa và giá trị. Một dấu cách trước mũi tên, một dấu cách sau mũi tên, không có dấu cách trước dấu chấm phẩy, một dấu cách sau dấu chấm phẩy, một dấu cách sau {
và một dấu cách trước }
và tất cả các không gian khác đều ở đó bởi vì chúng nằm trong khóa hoặc giá trị.
Giải pháp tốt, nhưng tôi thà sử dụng StringBuffer để có hiệu suất tốt hơn: 'chuỗi tĩnh công cộng bundle2string (bó bó) { StringBuffer buf = new StringBuffer (" Bundle {"); cho (Chuỗi khóa: bundle.keySet()) buf.append ("" + phím + "=>" + bundle.get (khóa) + ";"); buf.append ("} Gói"); return buf.toString(); } ' – Maurix
Hiệu năng IMO không liên quan đến mục đích của _bundle2string() _, nhưng ngay cả khi chúng ta giả định ngược lại, theo http://stackoverflow.com/a/4649160/755804, _String nối được dịch thành các hoạt động StringBuilder bởi compiler._ Tôi đã không kiểm tra bản thân mình cho Android; nếu ai đó quan tâm đến việc kiểm tra điều này, vui lòng xác nhận hoặc bác bỏ. – 18446744073709551615
@Maurix Vì không có chủ đề liên quan, StringBuilder là tốt hơn so với StringBuffer: https://developer.android.com/reference/java/lang/StringBuffer.html –
Tôi nghĩ bạn có nghĩa là 'bundle.keySet()' (vì liên kết tài liệu của bạn là tốt); nếu không thì điều này là chính xác. – Eric
@Eric gah, lỗi ngớ ngẩn. Ít nhất tôi đánh vần nó một cách chính xác khi tôi liên kết với nó. –