2012-11-14 73 views
9

我有這個枚舉這樣我想包一個包的枚舉值並獲得儘可能枚舉

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

我想通過通過捆綁發送此枚舉值到另一個線程。

另一個線程想提取從包枚舉值,

如何才能做到這一點,巧妙?

Bundle createBundle(Status status); 

Status getStatus(Bundle b); 

感謝,

+0

你不能。將枚舉看作創建類的捷徑。它沒有「實例」,因此捆綁它是沒有意義的。你可以捆綁類型並通過,但是這不會給你任何東西。你可能想要通過一個枚舉值?其實,你想做什麼? – Simon

+0

啊,.剛剛看過標題。請編輯你的問題,以明確你想要傳遞一個枚舉值,而不是枚舉本身,並接受Todd的答案。謝謝! – Simon

+0

可能的[Android的重複:如何把一個枚舉放入一個包?](http://stackoverflow.com/questions/3293020/android-how-to-put-an-enum-in-a-bundle) – blahdiblah

回答

7

問得好!我不知道直接打包枚舉的方法。我一直用這個包裝:

int intValue = myEnum.ordinal(); 

那麼這個解壓:

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

託德,這將爲我工作,謝謝 – Ahmed

25

由於ENUM是序列化,我們就可以利用包枚舉成束:

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

要檢索,使用:

MyEnum myEnum = (MyEnum) myBundle.getSerializable(MY_ENUM);