[英]Android Java: using enums
我想知道如何在 Java 中使用枚舉。 我正在開發 Android 的配方應用程序。 我在 TabHost 中有一個帶有四個選項卡的屏幕,並且想通過命名常量來引用它們,我相信最好通過枚舉來完成。
private enum mTab {
TAB_NAME(0), TAB_INGREDIENT(1), TAB_STEP(2), TAB_MEDIA(3);
final int numTab;
private mTab(int num){
this.numTab = num;
}
public int getValue(){
return this.numTab;
}
};
現在我想為每個選項卡創建一個不同的菜單。 例如,對於 TAB_INGREDIENT,我想要一個名為“添加成分”的菜單選項,而對於 TAB_MEDIA,我想要一個名為“添加圖像”的菜單選項。
我正在通過 onPrepareOptionsMenu() 創建菜單,就像這樣
public boolean onPrepareOptionsMenu(Menu menu) {
// Clear menu before showing new menu
menu.clear();
super.onPrepareOptionsMenu(menu);
// Create new menu based on current tab
MenuInflater inflater = getMenuInflater();
int tab = getTabHost().getCurrentTab();
switch (tab) {
...
}
return true;
}
問題是我不知道在 switch 語句中放什么。 更具體地說,我不知道如何將“tab”(對應於當前選定的選項卡的 integer)與枚舉元素進行比較。
您可以在 mTab 枚舉中添加如下方法 -
public static mTab toMTab(int val) {
mTab retMTab = null;
for (mTab tempTab : mTab.values()) {
if(tempTab.getValue() == val) {
retMTab = tempTab;
break;
}
}
return retMTab;
}
然后在你的 onPrepareOptionsMenu() 你可以這樣做 0
switch(mTab.toMTab(intVal)) {
case TAB_NAME:
...
break;
case TAB_INGREDIENT:
..
...
}
枚舉變量可以直接放在Java中的switch語句中。 然而,我擔心 enum 在這種情況下可能不是最合適的選擇,因為您的每個選項卡都在做不同的事情:裝飾或子類化恕我直言會更好。 從我從 Josh Bloch 那里了解到,如果您必須向枚舉添加方法,它們都應該具有相同的名稱,例如:計算器上的操作。
每個字母都是枚舉的一部分:
Menu v;
...
switch (v)
{
case A:
...
case B:
default:
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.