Android-由switch-case和view.getId()引起的bug:错误:需要常量表达式 的解决办法

无意中,使用按钮测试点击事件,在此过程中使用了switch case语句,在条件switch中使用了view.getId(),出现错误。我记得很早之前写Android程序没啥问题,于是研究了一番。
度娘一番才知道,是因为R文件的缘故。

在Android Gradle Plugin version 8.0中,资源id默认为非final,避免在switch case语句中使用它们。

解决办法有以下:

方法一:

将 switch case 语句换为 if else 语句。

在配置文件中加入 android.nonFinalResIds=false,忽略该错误,但是损失编译效率性能。

同时switch case会提示warning警告。

可以加上@SuppressLint("NonConstantResourceId") 注解消除 warning警告。

相关推荐
事圆则缓1 小时前
从suspend字节码到 Retrofit 协程桥:挂起函数识别与恢复
android·retrofit
iNeuOS工业互联网2 小时前
iNeuOS工业互联网操作系统,重要更新:性能优化、安全漏洞与BUG修复,远程控制响应效率大幅提升
性能优化·bug
杉氧2 小时前
RN 性能调优指南:重渲染(Re-renders)控制与长列表(FlatList)优化
android·前端·react native
Coffeeee2 小时前
claude-video 一个让你的Agent拥有看视频能力的Skill
android·人工智能·aigc
菜鸟~noob2334 小时前
【电子战】第07篇:多普勒测向【含matlab代码】
android·开发语言·matlab
样子20184 小时前
Js 之根据白名单过滤 HTML(防止 XSS 攻击)
android·前端·javascript·html·xss
InsightCore4 小时前
别再往 Skill 里塞一切:我们如何重新思考 AI Debug Engineer
android·debug
Kapaseker4 小时前
写过 4000 行 ViewModel 后,我开始这样拆 Compose 页面
android·kotlin
恋猫de小郭4 小时前
ADB Wi-Fi 2.0 ,Android 17 把无线调试的连接链路重新做了一遍
android·前端·flutter
亿是守候 & 亿是承诺4 小时前
第二章 控制系统的数学模型
android