我的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,但我想找到一种“聪明”或“干净”的方式来做到这一点,你有什么想法吗?
答案 0 :(得分:0)
您可以使用Resources的getIdentifier方法获取字符串的id。例如:
getResources().getIdentifier(resValue, "string", getPackageName())
这将返回您可以在switch语句中使用的id并进行比较。