0

私は現在、スピナーで月の変換に取り組んでいます。ここでは、システムから currentmonth("10") を取得し、月の値を列挙型に渡して、対応する列挙型名 ("Oct") を取得しようとしています。

1月から12月までのスピナー配列文字列があります。スピナーで列挙名「10月」の位置を取得しようとすると、空白が返されます。しかし、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)) . . .

==文字列値を比較する代わりに。演算子は、==2 つのオブジェクトが同じ論理値を持つかどうかではなく、実際に同じオブジェクトであるかどうかをテストします。equals()2 つの文字列が同じ値 (同じ文字が同じ順序で並んでいる) であるかどうかをテストします。

values()配列に単純にインデックスを付けることも検討できます。

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

(もちろん、適切なエラーチェックが追加されています)。

于 2013-10-22T06:35:31.510 に答える