我目前正在使用微调器进行月份转换。 在这里,我试图从系统中检索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;
}
}
答案 0 :(得分:0)
尝试使用
if (e.mValue.equals(code)) . . .
而不是==
来比较字符串值。 ==
运算符测试两个对象实际上是否是同一个对象,而不是它们是否具有相同的逻辑值。 equals()
测试两个字符串是否具有相同的值:相同顺序的相同字符。
您也可以考虑简单地索引到values()
数组:
int index = Integer.parseInt(code) - 1;
return MonthConversion.values()[index];
(当然,添加了适当的错误检查)。