Android switch语句报错Constant expression required
方案一 :可以用 if来替代 如下
原因:在Android Studio中使用JDK17以上版本,会出现switch语句报错"Constant expression required
"的问题,这是因为在JDK17中switch语句的条件表达式支持使用枚举类型,而这个特性还没有被支持。
方案2:换JDK版本
因为JDK17暂时不支持这个特性,可以换成17以下版本可以,JDK8和JDK11都可以
方案3:使用枚举替换
不过这个太麻烦,不太推荐
首先,创建一个枚举类,用于表示不同的按钮。例如:
1 public enum ButtonType {
2 BTN_ALERT,
3 BTN_OTHER1,
4 BTN_OTHER2,
5 // 添加更多按钮类型
6 }
接下来,在你的Activity或Fragment中,声明一个成员变量来表示当前按钮的类型:
1 private ButtonType currentButtonType;
然后,将枚举类型与按钮关联起来。你可以使用Map来将按钮的资源ID与枚举类型进行映射。在Activity的onCreate
方法中,或者Fragment的onCreateView
方法中,进行如下操作:
1 Map<Integer, ButtonType> buttonTypeMap = new HashMap<>();
2 buttonTypeMap.put(R.id.bnt_alert, ButtonType.BTN_ALERT);
3 buttonTypeMap.put(R.id.bnt_other1, ButtonType.BTN_OTHER1);
4 buttonTypeMap.put(R.id.bnt_other2, ButtonType.BTN_OTHER2);
5 // 添加更多按钮类型的映射
6
7 // 设置按钮的点击事件
8 findViewById(R.id.bnt_alert).setOnClickListener(v -> onButtonClick(ButtonType.BTN_ALERT));
9 findViewById(R.id.bnt_other1).setOnClickListener(v -> onButtonClick(ButtonType.BTN_OTHER1));
10 findViewById(R.id.bnt_other2).setOnClickListener(v -> onButtonClick(ButtonType.BTN_OTHER2));
11 // 添加更多按钮的点击事件
最后,在你的Activity或Fragment中实现onButtonClick
方法,根据枚举类型来执行相应的逻辑:
1 private void onButtonClick(ButtonType buttonType) {
2 // 根据按钮类型执行相应的逻辑
3 switch (buttonType) {
4 case BTN_ALERT:
5 // 处理 BTN_ALERT 按钮点击事件
6 break;
7 case BTN_OTHER1:
8 // 处理 BTN_OTHER1 按钮点击事件
9 break;
10 case BTN_OTHER2:
11 // 处理 BTN_OTHER2 按钮点击事件
12 break;
13 // 处理更多按钮类型的点击事件
14 }
15 }
通过这种方式,你可以使用枚举类型来表示不同的按钮,并在点击事件中使用枚举类型,而不是直接使用资源ID,也能解决问题。
Android switch语句报错Constant expression required的更多相关文章
- android switch语句报错:case expressions must be constant expressions
今天无意中碰见了 case expressions must be constant expressions 的问题 写了一个 switch(item.getItemId()) { case R. ...
- (转)android import library switch语句报错case expressions must be constant expressions
今天当我从github上下载一个工程,并把它的库文件导入eclipse中,发现switch语句报错case expressions must be constant expressions : 解决方 ...
- Constant expression required
switch 语句编译报错Constant expression required 问题:case语句后面必须是常量,使用final修饰 public static final int NotifyT ...
- mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg
mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg ...
- ubuntu18.04 下启动Android Studio报错KVM is required to run this AVD. /dev/kvm device: permission denied.
在ubuntu18.04下安装Android Studio,安装了模拟器后运行报错 KVM is required to run this AVD. /dev/kvm device: permissi ...
- react native-调用react-native-fs插件时,如果数据的接口是需要验证信息的,在android上运行报错
调用react-native-fs插件时,如果数据的接口是需要验证信息的,在android上运行报错,而在iOS上运行没问题.原因是因为接口是有验证信息的,而调用这个插件时没有传入,在iOS上会自动加 ...
- mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage
mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage 在执行cr ...
- 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...
- 解决Mysql搭建成功后执行sql语句报错以及区分大小写问题
刚搭建完mysql 8.0以后会: 一.表区分大小写, 二.执行正确的sql语句成功且会报:[Err] 1055 - Expression #1 of ORDER BY clause is not i ...
- android sdk启动报错error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:
android sdk启动报错error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 问题原因: ...
随机推荐
- ORM-gorm
ORM-gorm 官方文档 http://gorm.book.jasperxu.com/ https://learnku.com/docs/gorm/v2 gorm文档 gorm文档2
- IdentityServer4 系列文章01---密码授权模式
IdentityServer4实现.Net Core API接口权限认证(快速入门) 什么是IdentityServer4 官方解释:IdentityServer4是基于ASP.NET Core实 ...
- SqlSugar的Repository
1.仓储说明 仓储可以让你的方法更加的规范,需要什么方法都封装到仓储中,下次就能重复使用,并且能很好的和你业务拆分开 这种设计模式简单粗暴用起来也方便 ,文章下面有可以运行的DEMO 2.仓储方法 仓 ...
- 6.7 Windows驱动开发:内核枚举LoadImage映像回调
在笔者之前的文章<内核特征码搜索函数封装>中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核LoadImage映像回调,在Win64环境下我们可以设置一个LoadI ...
- Java实现将中缀表达式转换到后缀表达式
思路: 1.初始化两个栈 运算符栈 s1 和储存中间结果栈 s22. 从左到右扫描中缀表达式3. 遇到操作数时 压入s24. 遇到操作符 o1 时 比较其与 S1 栈顶运算符的优先级 1)如果s1为空 ...
- ntp.conf详解
linux系统的ntp.conf文件默认保存在/etc/ntp.conf 版本: [root@dsview ntpstats]# cat /etc/redhat-release CentOS rele ...
- System V|共享内存基本通信框架搭建|【超详细的代码解释和注释】
前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014. ...
- 【C语言深度解剖】预定义章节经典面试题讲解(offsetof宏模拟实现)【超详细的解释和注释】
[C语言深度解剖]预定义章节经典面试题讲解(offsetof宏模拟实现)[超详细的解释和注释] 那么这里博主先安利一下一些干货满满的专栏啦! 作者: #西城s 这是我的主页:#西城s 在食用这篇博客之 ...
- 【C语言进阶】atoi函数的模拟实现【C的深度解剖】超详细的解释和注释
[C语言进阶]atoi函数的模拟实现[C的深度解剖]超详细的解释和注释 那么这里博主先安利一下一些干货满满的专栏啦! 作者: #西城s 这是我的主页:#西城s 在食用这篇博客之前,博主在这里介绍一下其 ...
- PicGo + Gitee 实现 Markdown 图床
最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...