在Switch中使用来自资源XML的字符串?

use*_*103 10 java android switch-statement android-resources

这里是Android的新手,所以如果这是一个简单的问题我会道歉.

我试图在我的XML中使用基于字符串资源的开关.它看起来像这样:

switch (myStringVariable) {
    case getResources().getString(R.string.first_string):
         break;
    case getResources().getString(R.string.second_string):
         break;
    case getResources().getString(R.string.third_string):
         break;
    default:
         break;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.我得到的错误是"需要常量表达式".

是否有一种半优雅的方式来解决这个问题,而不必像创建3个String对象那样做并为每个对象分配字符串资源?我觉得我错过了一些明显的东西,所以任何帮助都会很棒!

谢谢 :)

npa*_*ace 5

好吧,首先,Android所基于的Java版本不支持String switch语句,所以通常你必须使用if/else块.

编辑:如果您使用JDK 1.7及更高版本,则支持字符串开关语句

我不知道你的使用情况是什么,但如果你有资源ID myStringVariable,这是一个int,你可以做在一个开关:

switch (myStringResId) {
case R.string.first_string:
     break;
case R.string.second_string:
     break;
case R.string.third_string:
     break;
default:
     break;
}
Run Code Online (Sandbox Code Playgroud)

  • *不支持String switch语句*,这不是真的 (4认同)