当前位置: 首页 > news >正文

Android Button设置点击监听器用switch case R.id.xxxx报错:Constant expression required

背景

问题:在旧项目 R.id.btn 还能直接引用xml中定义的Button id,但是新项目发现都报错了。

Old code - AGP 3.5.2 & Gradle 6.5
Old code - AGP 3.5.2 & Gradle 6.5
New code -  AGP 8.4.0 & Gradle 8.6
New code -  AGP 8.4.0 & Gradle 8.6

 原因:因为Gradle 8.0之后不支持这种写法,为了改善增量编译的性能,而弃用这种恒定的R.id。

Suggetion of old code
Suggetion of old code

建议说明

Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in switch case statements
Inspection info: Avoid the usage of resource IDs where constant expressions are required.  A future version of the Android Gradle Plugin will generate R classes with non-constant IDs in order to improve the performance of incremental compilation.  

Issue id: NonConstantResourceId

Vendor: Android Open Source Project

Contact: https://groups.google.com/g/lint-dev

Feedback: https://issuetracker.google.com/issues/new?component=192708 

可选操作:Suppress NonConstantResourceId with an annotation,但是在高版本Gradle还是波浪红线报错了,提示:Constant expression required。

新代码信息:API 34,Java 8(所以不是JDK17的switch语句更新问题吧)

解决方案

用 if esle替换switch的判断

    @Overridepublic void onClick(View v) {if (v.getId() == R.id.btn) {//点击操作}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2679. 矩阵中的和
  • DolphinDB Web 端权限管理:可视化操作指南
  • 钡铼网关实时数据互联,加速IEC104与MQTT云平台对接
  • C++STL简介(二)
  • 面试重点---快速排序
  • 模块与组件、模块化与组件化的理解
  • 可消费的媒体类型和可生成的媒体类型
  • 数据结构——单链表OJ题(上)
  • 玄机-第一章 应急响应-webshell查杀
  • 数据库之数据表基本操作
  • Prometheus监控ZooKeeper
  • Matlab arrayfun 与 bsxfun——提高编程效率的利器!
  • exuberant ctags 支持 typescript 解析
  • 自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)
  • 什么是埋点?前端如何埋点?
  • CSS相对定位
  • iOS编译提示和导航提示
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Kibana配置logstash,报表一体化
  • Python学习之路13-记分
  • spark本地环境的搭建到运行第一个spark程序
  • Spring框架之我见(三)——IOC、AOP
  • 动态规划入门(以爬楼梯为例)
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 使用common-codec进行md5加密
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 数组大概知多少
  • 为视图添加丝滑的水波纹
  • 赢得Docker挑战最佳实践
  • - 转 Ext2.0 form使用实例
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Spring第一个helloWorld
  • UI设计初学者应该如何入门?
  • 关于Android全面屏虚拟导航栏的适配总结
  • 移动端高清、多屏适配方案
  • ###项目技术发展史
  • (0)Nginx 功能特性
  • (TOJ2804)Even? Odd?
  • (笔试题)合法字符串
  • (三)elasticsearch 源码之启动流程分析
  • (十三)Maven插件解析运行机制
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .Net7 环境安装配置
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET连接数据库方式
  • .NET是什么
  • @KafkaListener注解详解(一)| 常用参数详解
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...