方案一 :可以用 if來替代 如下 原因:在Android Studio中使用JDK17以上版本,會出現switch語句報錯"Constant expression required"的問題,這是因為在JDK17中switch語句的條件表達式支持使用枚舉類型,而這個特性還沒有被支持。 方案2:換JD ...
方案一 :可以用 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