猿问

使用整数资源切换大小写

我想使用 switch 命令并在资源文件中定义选择,但出现错误:错误:需要常量表达式


您有什么建议吗?


资源文件integers.xml


<integer name="readID">0x21</integer>

<integer name="readRevision">0x22</integer>

java 文件:


switch (cmd) {

case getResources().getInteger(R.integer.readID):

    break;

case getResources().getInteger(R.integer.readRevision):

    Log.d(TAG, "case revision");

    break;


SMILET
浏览 84回答 3
3回答

莫回无

在 Java 中,开关的 case 部分需要一个常量值。Java 期望使用 getResources().getInteger(R.integer.readID),因为它是一个方法调用,值可能会在运行时更改。 您可以使用 if、else if、else 结构。

30秒到达战场

只需在单独的文件(也许是 Constants.java)中将整数定义为静态常量。常数public class Constants{public static final int READ_ID = 0x11;public static final int READ_REVISION = 0x22;}转变switch (cmd) {&nbsp; &nbsp; &nbsp; &nbsp; case Constants.READ_ID:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; case Constants.READ_REVISION:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }

桃花长相依

尝试private int getInt(@IntegerRes int res){&nbsp; &nbsp; return context.getResources().getInteger(res);}例如:switch (cmd) {case getInt(R.integer.readID):&nbsp; &nbsp; break;case getInt(R.integer.readRevision):&nbsp; &nbsp; Log.d(TAG, "case revision");&nbsp; &nbsp; break;}
随时随地看视频慕课网APP

相关分类

Java
我要回答