Spinner选择的字符串取决于switch case中使用的语言

时间:2017-01-10 10:10:25

标签: android localization switch-statement

我的Spinner上有一个Activity项目“hello”和“goodbye”供用户选择。当设备使用西班牙语时,这些项目将是“hola”和“adios”,因为字符串是从string-es/而不是string中选择的。

问题是我的代码上有很多切换案例如下:

switch(spinnerSelectedItem){
     case "hello":
     case "hola":
          //do something
          break;
     case "goodbye":
     case "adios":
          //do something else
          break;

}

我试图创建一个用字符串资源初始化的最终String,但它抱怨说“需要常量表达式”

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而不是value,或使用if子句而不是switch,但我想找到一种“聪明”或“干净”的方式来做到这一点,你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Resources的getIdentifier方法获取字符串的id。例如:  getResources().getIdentifier(resValue, "string", getPackageName()) 这将返回您可以在switch语句中使用的id并进行比较。