0

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

我从一月到十二月有微调器数组字符串。当我尝试在微调器中获取枚举名称“Oct”的位置时,它返回空白。但是,当我尝试在 getPosition 中对“Oct”进行硬编码时,它起作用了。我无法找出为什么 getEnumByString 返回空白。谁能帮我。

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

月换算:

 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;
        }
}
4

1 回答 1

0

尝试使用

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

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

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

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

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

于 2013-10-22T06:35:31.510 回答