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

[复制链接]
发表于 2025-3-23 03:41:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
题目与处置惩罚策略

题目描述

  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
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表