Activity
にSpinner
があり、ユーザーが選択できる項目は「hello」と「goodbye」です。これらのアイテムは、デバイスがスペイン語の場合、文字列がstring
ではなくstring-es/
から選択されるため、 "hola"と "adios"になります。スイッチケースで使用される言語に応じて、スピナーが選択した文字列に依存します。
問題は、私はこのように私のコードに多くのスイッチケースを持っていることである:
switch(spinnerSelectedItem){
case "hello":
case "hola":
//do something
break;
case "goodbye":
case "adios":
//do something else
break;
}
私は、文字列リソースを使用して初期化、最終的な文字列を作成しようとしたが、それは定数式が必要です」と言って文句を言います
final String resHello = getResources().getString(R.string.helloText);
final String resGoodbye = getResources().getString(R.string.goodbyeText);
switch(spinnerSelectedItem){
case resHello :
//do something
break;
case resGoodbye :
//do something else
break;
}
これは簡易版である "、私はより多くのアイテムを持っており、二つ以上の言語
一つの解決策ではなく、文字列IDを使用することですスイッチの代わりにif節を使うことができますが、これを行うには「スマートな」方法や「クリーンな」方法を見つけたいと思います。
idを使用すると、スイッチの場合に使用でき、言語に応じて自動的に正しいリソースを指すようになるので、より良いでしょう – akash93
次に、選択した文字列をIDに変換する方法を記述する必要があります。たとえば、次のようにします。 'public int idFromStringResourceValue(文字列resValue){ if(resValue.equals(getResources()。getString(R.string.helloText)){return R.string.helloText;} if(resValue.equals また、より良い方法がありますか? – jordileft
Stringオブジェクトのswitch文は、Java 1.7で導入された新機能です。 (英語の情報は、こちらを参照してください。 http://stackoverflow.com/questions/14367629/android-coding-with-switch-string –