首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以在switch语句中使用Android Integer资源吗?

可以在switch语句中使用Android Integer资源吗?
EN

Stack Overflow用户
提问于 2011-05-17 15:37:58
回答 3查看 4.3K关注 0票数 3

我在项目的"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,但也不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-17 15:51:28

从技术上讲,您的整数资源值不是常量。编译器如何知道每种情况的值?总是有可能为不同的配置检索不同的值。(例如,您可以有一个具有不同景观值的values-land资源文件夹。)或者,您可以只更改xml文件中的值。

如果它们是真正的常量,请在代码中定义它们。我能看到的唯一另一种替代方法是创建一个可运行(或可调用)对象的调度表,每个调度表用于交换机的每个分支,并根据从资源中检索到的值检索适当的调度表。

票数 3
EN

Stack Overflow用户

发布于 2011-05-17 15:52:27

嗯,resources.getInteger(R.integer.INTEGER_NAME)resources.getString(R.string.STRING_NAME)一样不是一个常量:它是一个查找,所以你不能在case语句中使用它们。你将不得不忍受if/else链。

票数 2
EN

Stack Overflow用户

发布于 2011-05-17 15:55:54

我试过这些方法,它起作用了。

代码语言:javascript
运行
AI代码解释
复制
Resources r = getResources(); 
int i = r.getInteger(R.integer.lol); 
switch (i) { 
    case 1: 
        Log.d("lol", "hehehe0"); 
        break; 
    default: 
        break; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6033360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档