2012-11-14 24 views
9

Tôi có enum này như thế nàyTôi muốn để đóng gói một giá trị enum trong một Bundle và nhận được càng enum

enum Status {READY, DISCONNECTED, RECEIVING, ... more } 

Tôi muốn gửi một giá trị enum này qua thread khác thông qua một Bundle.

Các chủ đề khác muốn trích xuất giá trị enum từ Bundle,

Làm thế nào điều này có thể được thực hiện, thông minh?

Bundle createBundle(Status status); 

Status getStatus(Bundle b); 

Cảm ơn,

+0

Bạn không thể. Hãy suy nghĩ về một enum như một cách tắt để tạo ra một lớp học. Nó không có "thể hiện" và do đó nó không có nghĩa là bó nó lại. Bạn có thể gói loại và vượt qua điều đó nhưng điều đó không cung cấp cho bạn bất cứ điều gì. Bạn có lẽ muốn vượt qua một giá trị enum? Trên thực tế, những gì * là * bạn đang cố gắng để làm gì? – Simon

+0

Ah ,. chỉ nhìn thấy tiêu đề. Xin vui lòng chỉnh sửa câu hỏi của bạn để làm cho nó rõ ràng rằng bạn đang cố gắng để vượt qua một giá trị enum, không phải enum chính nó, và chấp nhận câu trả lời của Todd. Cảm ơn! – Simon

+0

Có thể trùng lặp của [Android: Làm thế nào để đặt một Enum trong một Bundle?] (Http://stackoverflow.com/questions/3293020/android-how-to-put-an-enum-in-a-bundle) – blahdiblah

Trả lời

7

Câu hỏi hay! Tôi không biết cách để gói ghẻ trực tiếp. Tôi luôn luôn sử dụng để đóng gói:

int intValue = myEnum.ordinal(); 

thì đây để giải nén:

MyEnum enumValue = MyEnum.values()[intValue]; 
+0

Todd sẽ làm việc cho tôi, cảm ơn – Ahmed

25

Kể từ Enum là serializable, chúng ta có thể chỉ gói enum vào bó sử dụng:

public static String MY_ENUM = "MY_ENUM"; 
myBundle.putSerializable(MY_ENUM, enumValue); 

Để truy xuất, sử dụng:

MyEnum myEnum = (MyEnum) myBundle.getSerializable(MY_ENUM); 
Các vấn đề liên quan