如何在Android首选项中强制执行精确的字符串长度?

如何在Android首选项中强制执行精确的字符串长度?,android,sharedpreferences,edittextpreference,Android,Sharedpreferences,Edittextpreference,我有一个首选项屏幕,当一个设置被启用时,它有几个字符串,这些字符串必须是一个特定的长度(#个字符)。此外,所有字符串都是必需的。理想情况下,当用户启用此设置时,在所有字符串以适当的长度归档之前,他们应该无法应用更改。请注意,我说的不是最大长度,而是确切的字符数 如何对用户强制执行这些规则?有没有办法通过内置的首选项控件实现这一点,或者我必须构建一个自定义片段?首选项类具有onPreferenceChange侦听器。 公共抽象布尔onPreferenceChange(首选项首选项,对象newVal

我有一个首选项屏幕,当一个设置被启用时,它有几个字符串,这些字符串必须是一个特定的长度(#个字符)。此外,所有字符串都是必需的。理想情况下,当用户启用此设置时,在所有字符串以适当的长度归档之前,他们应该无法应用更改。请注意,我说的不是最大长度,而是确切的字符数


如何对用户强制执行这些规则?有没有办法通过内置的首选项控件实现这一点,或者我必须构建一个自定义片段?

首选项类具有onPreferenceChange侦听器。 公共抽象布尔onPreferenceChange(首选项首选项,对象newValue)

通过从此侦听器返回false,将不接受新值:

public boolean onPreferenceChange(Preference pref, Object newValue) {
  if (pref == myStringPreferenceToValidate) {
      final String newValueStr = (String) newValue;
      if (newValueStr.length() != XX) {
        // don't save it, not the correct length
        return false;
      }
      return true;
   }
}
查看此处的完整文档:

shee此处: