Android switch 语句编译题目:必要常量表达式

打印 上一主题 下一主题

主题 1022|帖子 1022|积分 3066

题目与处置惩罚策略

题目描述

  1. @Override
  2. public void onClick(View v) {
  3.     switch (v.getId()) {
  4.         case R.id.btn_dbAdd:
  5.                         ......
  6.             
  7.             break;
  8.         case R.id.btn_dbSave:
  9.                         ......
  10.             
  11.             break;
  12.         case R.id.btn_dbDelete:
  13.                         ......
  14.             
  15.             break;
  16.         default:
  17.             break;
  18.     }
  19. }
复制代码


  • 在 Android 项目中,上述代码导致编译报如下错误
  1. ...... 错误: 需要常量表达式
  2.             case R.id.btn_dbAdd:
  3.                      ^
  4. ...... 错误: 需要常量表达式
  5.             case R.id.btn_dbSave:
  6.                      ^
  7. ...... 错误: 需要常量表达式
  8.             case R.id.btn_dbDelete:
  9.                      ^
复制代码
题目缘故原由


  • 这个错误是由于 switch 语句的 case 标签中使用了非常量表达式
  • 新版本的 Gradle 不再直接生成传统的 R.java 文件
  • 因此,switch 语句的 case 标签中使用 ID 在编译时被视为非常量
处置惩罚策略


  • 将 switch 语句改写成 if else 语句
  1. 1. 光标定位到 switch 关键字
  2. 2. 使用快捷键【Alt + Enter】
  3. 3. 点击【Replace 'switch' with 'if'】
复制代码

  • 在 gradle.properties 文件中,添加如下配置
  1. android.nonFinalResIds=false
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表