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,也能解决问题。

 

posted on 2024-02-27 23:01  Bytezero!  阅读(586)  评论(0编辑  收藏  举报