2012-11-14 13 views
9

mam ten enum jak tenchcę pakować wartość enum w wiązce i uzyskać jak wyliczenia

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

Chcę wysłać wartość tego wyliczenia do innego wątku poprzez Bundle.

Drugi wątek chciałby, aby wyodrębnić wartość enum z wiązki,

Jak można to zrobić, elegancko?

Bundle createBundle(Status status); 

i

Status getStatus(Bundle b); 

Dzięki

+0

Nie możesz. Pomyśl o enum jako o skróconej drodze do stworzenia klasy. Nie ma "instancji" i dlatego nie ma sensu jej łączyć. Możesz zawrzeć typ i przekazać, ale to niczego nie da. Czy może chcesz przekazać wartość wyliczeniową? Właściwie, co * robisz * próbujesz zrobić? – Simon

+0

Ah ,. właśnie widziałem tytuł. Edytuj swoje pytanie, aby wyraźnie zaznaczyć, że próbujesz przekazać wartość wyliczeniową, a nie samą enum i akceptujesz odpowiedź Todda. Dzięki! – Simon

+0

Możliwy duplikat [systemu Android: jak umieścić Enum w pakiecie?] (Http://stackoverflow.com/questions/3293020/android-how-to-put-an-enum-in-a-bundle) – blahdiblah

Odpowiedz

7

Dobre pytanie! Nie jestem świadomy sposobu bezpośredniego pakowania enum. Zawsze używam go zapakować:

int intValue = myEnum.ordinal(); 

wówczas do rozpakowania:

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

Todd, który będzie działał dla mnie, dzięki – Ahmed

25

Ponieważ Enum jest serializacji, możemy po prostu zapakować enum do wiązki za pomocą:

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

Aby pobierz, użyj:

MyEnum myEnum = (MyEnum) myBundle.getSerializable(MY_ENUM); 
Powiązane problemy