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,也能解决问题。
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/18038649