在微调器中获取枚举名称

时间:2013-10-22 06:12:00

标签: java android enums

我目前正在使用微调器进行月份转换。 在这里,我试图从系统中检索currentmonth(“10”)并将month的值传递给枚举以获得相应的枚举名称(“Oct”)。

我从1月到12月有旋转器数组字符串。 当我试图在微调器中获得枚举名称“Oct”的位置时,它返回空白。然而,当我尝试在getPosition中硬编码“Oct”时,它起作用了。我无法找出为什么getEnumByString返回空白。任何人都可以帮助我。

String tempMonth=String.valueOf(monthCurrent);
monthSpin.setSelection(adapterMonth.getPosition(MonthConversion.getEnumByString(tempMonth));

MonthConversion:

 public enum MonthConversion {

 Jan("1"), Feb("2"), Mar("3"), Apr("4"),May("5"),Jun("6"),Jul("7"),Aug("8"),Sep("9"),Oct("10"),Nov("11"),Dec("12");

private String mValue;

private MonthConversion(String s) {
        mValue = s;
    }

    public String getStatusCode() {
        return mValue;
    }    
    public static String getEnumByString(String code){
          for(MonthConversion e : MonthConversion.values()){
            if(code == e.mValue)                    
                return e.name();
          }
          return null;
        }
}

1 个答案:

答案 0 :(得分:0)

尝试使用

if (e.mValue.equals(code)) . . .

而不是==来比较字符串值。 ==运算符测试两个对象实际上是否是同一个对象,而不是它们是否具有相同的逻辑值。 equals()测试两个字符串是否具有相同的值:相同顺序的相同字符。

您也可以考虑简单地索引到values()数组:

int index = Integer.parseInt(code) - 1;
return MonthConversion.values()[index];

(当然,添加了适当的错误检查)。