2011-06-24 50 views
30

Tôi đang có một thời gian để tìm ra dữ liệu nào đang đến phương pháp của tôi thông qua Intent/Bundle s. Tôi đã thử thêm điểm ngắt để kiểm tra dữ liệu, nhưng tôi không thấy gì cả. Có lẽ vì nó là một Parcelable Tôi không thể đọc nó một cách thủ công trong Eclipse.Làm cách nào để biết dữ liệu nào được cung cấp trong Gói?

Ví dụ: onActivityResult(int requestCode, int resultCode, Intent data) cho số Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI). Làm cách nào để biết dữ liệu nào có sẵn? Lưu ý, tôi không yêu cầu dữ liệu WHAT có sẵn nhưng làm cách nào để tôi tìm ra dữ liệu đó để tôi có thể áp dụng cùng một ý tưởng cho bất kỳ Bundle/Intent nào từ khung công tác Android? Có lẽ nó đơn giản như nhìn vào các tài liệu, nhưng tôi không thấy một danh sách đầy đủ của dữ liệu và tôi không thể nhìn thấy nó trong Eclipse. Vì vậy, tôi đang ở một mất mát.

Trả lời

64

Bundle.keySet() cung cấp cho bạn một danh sách tất cả các phím trong gói. Điều đó nói rằng, thông thường bạn chỉ mong đợi một số phím và truy vấn chúng, nhưng keySet() rất hữu ích để kiểm tra bó bạn nhận được từ một nơi nào đó.

+0

nhờ. Làm thế nào để tôi BIẾT những gì mong đợi là câu hỏi? Tôi thấy bây giờ tài liệu về nó, là có? – user123321

+0

Một gói thực sự chỉ là một container. Nó hoàn toàn phụ thuộc vào ứng dụng đóng gói nó lên. Nếu đó là của riêng bạn, sau đó nó rõ ràng - đó là bất cứ điều gì bạn đưa vào.Nếu nó là của người khác (hoặc từ hệ điều hành), sau đó nó phụ thuộc vào những gì nói ứng dụng đưa vào. Lựa chọn 1: Kiểm tra tài liệu. Tùy chọn 2: Hỏi nhà phát triển ứng dụng. Tùy chọn 3: Sử dụng Bundle.keySet() để phân tích gói đến. – EboMike

+0

** WHERE ** là tài liệu dành cho nội dung trong Gói cho ContactsContract.Contacts.CONTENT_URI đã bắt đầu với startActivityForResult? – user123321

0

Điều duy nhất bạn nhận được từ một nhóm là những gì bạn đưa vào. Gói là cách truyền thông tin giữa các hoạt động. Nếu bạn chịu trách nhiệm về toàn bộ ứng dụng của mình, bạn không cần phải nhìn vào bên trong Bundle cho các đối tượng của mình, bạn chỉ cần lấy chúng. Hãy suy nghĩ các phím băm ... nếu bạn không biết khóa, nó không giống như bạn có thể tìm kiếm hashmap.

Để đặt một mục vào một Gói và chuyển nó vào hoạt động tiếp theo, bạn cần đặt nó làm Phụ trang. Hãy xem here để biết ví dụ về truyền dữ liệu qua các tính năng bổ sung và các gói giữa các hoạt động.

sao chép và dán dưới đây:

Từ Activity1

Intent intent = new Intent(this,myActivity2.class); 
Bundle bundle = new Bundle(); 
bundle.putString(“myValue“, myValue); 
intent.putExtras(bundle); 
navigation.this.startActivity(intent); 

Trong Activity2

Bundle bundle = getIntent().getExtras(); 
act2MyValue= bundle.getString(“myValue“); 
39
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; 
} 
+5

Những người như bạn là lý do tại sao tôi rất tích cực trong SO cho chúng tôi cà phê readymade: P Cảm ơn – khandelwaldeval

2

tôi nhận alll trọng và giá trị của gói lưu trữ ...

for (String key : bundle.keySet()) { 
    string += " " + key + " => " + bundle.get(key) + ";"; 
} 

đầu ra:

(key)  :(value)  
profile_name:abc 
Các vấn đề liên quan