2011-09-28 23 views

Trả lời

144

Lớp HashMap của Java mở rộng giao diện Serializable, giúp dễ dàng thêm nó vào mục đích, sử dụng phương thức Intent.putExtra(String, Serializable).

Trong hoạt động/dịch vụ thu/phát sóng mà nhận được ý định, bạn sau đó gọi Intent.getSerializableExtra(String) với tên mà bạn sử dụng với putExtra.

Ví dụ, khi gửi ý:

HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("key", "value"); 
Intent intent = new Intent(this, MyOtherActivity.class); 
intent.putExtra("map", hashMap); 
startActivity(intent); 

Và sau đó trong Hoạt động tiếp nhận:

protected void onCreate(Bundle bundle) { 
    super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 
    HashMap<String, String> hashMap = (HashMap<String, String>)intent.getSerializableExtra("map"); 
    Log.v("HashMapTest", hashMap.get("key")); 
} 
+16

Lưu ý rằng HashMaps serialize. Bản đồ, rõ ràng là không. –

+3

Bản đồ là một giao diện - bạn không thể tuần tự hóa giao diện, chỉ thực hiện một giao diện cụ thể. Trong trường hợp này, Map không thực hiện/mở rộng giao diện Serializable, do đó, nó thực hiện cụ thể cho dù nó muốn thực hiện Serializable hay không. Và HashMap hiện thực hiện nó. – JesusFreke

+1

Xin chào, tôi đang gửi một HashMap dưới dạng một chuỗi có thể tuần tự hóa thêm từ một Hoạt động tôi đã bắt đầu cho kết quả từ một hoạt động khác. Vì vậy, tôi đang trở về một ý định về kết quả. Khi tôi cố gắng lấy HashMap từ mục đích, (HashMap ) intent.getSerializableExtra ("map"); trả về null. Có phải vì tôi đang sử dụng HashMap hoặc vì tôi đang gửi nó từ một Hoạt động đã được tạo cho kết quả từ một Hoạt động khác không? – marienke

0

Tôi hy vọng điều này phải làm việc quá.

trong hoạt động gửi

Intent intent = new Intent(Banks.this, Cards.class); 
          intent.putExtra("selectedBanksAndAllCards", (Serializable) selectedBanksAndAllCards); 
          startActivityForResult(intent, 50000); 

trong hoạt động nhận

Intent intent = getIntent(); 
    HashMap<String, ArrayList<String>> hashMap = (HashMap<String, ArrayList<String>>) intent.getSerializableExtra("selectedBanksAndAllCards"); 

khi tôi gửi một HashMap như sau,

Map<String,ArrayList<String>> selectedBanksAndAllCards = new HashMap<>(); 

Hy vọng nó sẽ hel p cho ai đó.

Các vấn đề liên quan