首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android EditTextPreference 限制輸入數值範圍 (最大 100)

     編輯:程式設計綜合問答

做法

實作 OnPreferenceChangeListener,在偏好設定變更前驗證數值:

EditTextPreference pref = (EditTextPreference) findPreference("max_value_key");
pref.setOnPreferenceChangeListener((preference, newValue) -> {
    try {
        int value = Integer.parseInt((String) newValue);
        return value >= 0 && value <= 100; // 回傳 true 允許變更,false 攔截
    } catch (NumberFormatException e) {
        return false; // 非數字攔截
    }
});

補充:顯示錯誤提示

pref.setOnPreferenceChangeListener((preference, newValue) -> {
    try {
        int value = Integer.parseInt((String) newValue);
        if (value < 0 || value > 100) {
            Toast.makeText(getContext(), "請輸入 0-100 之間的數值", Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    } catch (NumberFormatException e) {
        Toast.makeText(getContext(), "請輸入有效數字", Toast.LENGTH_SHORT).show();
        return false;
    }
});

注意

  • OnPreferenceChangeListener 在值寫入 SharedPreferences **前** 呼叫
  • 回傳 false 會取消本次變更,UI 維持原值
  • 若需即時輸入過濾 (只能打數字),另需在 XML 設定 android:numeric="integer" 或 android:inputType="number"
  1. 上一篇文章:
  2. 下一篇文章:
IntelliJ IDEA 報「找不到類」異常?三大常見原因與快速排查 iOS 使用 initWithNibName:nil 導致黑屏崩潰:需指定 XIB 或使用 Storyboard Linux 內核 MTD 子系統:為何 /dev 下有 mtd 卻無 mtdblock 節點? HTML 嵌入樣式表: