2013-10-22 45 views
0

我目前正在研究微調框中的月轉換。 這裏我試圖從系統中檢索currentmonth(「10」)並將月的值傳遞給枚舉以獲得相應的枚舉名稱(「Oct」)。獲取微調框中的枚舉名稱

我有微調數組字符串從1月至12月開始。 當我試圖獲取位置的微調框中的枚舉名稱「十月」,它返回空白。但是,當我嘗試在getPosition中「十月」硬編碼時,它工作。我無法找出爲什麼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

發佈您的MonthConversion。 –

回答

0

嘗試使用的

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

代替==來比較兩個字符串值。 ==運算符測試兩個對象是否實際上是同一個對象,而不是它們是否具有相同的邏輯值。 equals()測試兩個字符串是否具有相同的值:相同順序中的相同字符。

您也可以考慮簡單地索引到values()數組:

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

(與檢查添加適當的錯誤,當然)。

+0

好抓住:) ..非常感謝你..我犯了'=='而不是等號的錯誤。我改回等於。它的工作正常。 – cruise

+0

我也嘗試過索引。它工作得很好。我只是將'MonthConversion.values()[index]''轉換爲字符串並返回 – cruise