我在项目的"values“目录中有一个"numeric.xml”文件,其中包含项目的大部分整数常量。我想在switch语句中使用其中的一些常量,但Eclipse/Java不喜欢这样做,因为它不认为"resources.getInteger(R.integer.INTEGER_NAME)“是常量。有没有办法让编译器和/或Eclipse知道它是一个常量,或者我只需要忍受if/else链?
编辑:我尝试执行"final int INTEGER_NAME = resources.getInteger(R.integer.INTEGER_NAME)“并在case语句中使用INTEGER_NAME,但也不起作用。
发布于 2011-05-17 15:51:28
从技术上讲,您的整数资源值不是常量。编译器如何知道每种情况的值?总是有可能为不同的配置检索不同的值。(例如,您可以有一个具有不同景观值的values-land
资源文件夹。)或者,您可以只更改xml文件中的值。
如果它们是真正的常量,请在代码中定义它们。我能看到的唯一另一种替代方法是创建一个可运行(或可调用)对象的调度表,每个调度表用于交换机的每个分支,并根据从资源中检索到的值检索适当的调度表。
发布于 2011-05-17 15:52:27
嗯,resources.getInteger(R.integer.INTEGER_NAME)
和resources.getString(R.string.STRING_NAME)
一样不是一个常量:它是一个查找,所以你不能在case语句中使用它们。你将不得不忍受if/else链。
发布于 2011-05-17 15:55:54
我试过这些方法,它起作用了。
Resources r = getResources();
int i = r.getInteger(R.integer.lol);
switch (i) {
case 1:
Log.d("lol", "hehehe0");
break;
default:
break;
}
https://stackoverflow.com/questions/6033360
复制相似问题