Android EditText首选项验证

lea*_*ner 10 android sharedpreferences edittextpreference

我使用Edittextpreference作为设置部分中的首选项之一.我想在用户向其输入数据并单击确定时验证此edittextpreference; 在将其保存在共享首选项之前.

我试图做这样的事情,但这首先保存了我的偏好.

editTextPreference
            .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference,
                        Object newValue) {
                    if (((newValue.toString().length() == 15) {
                          // save preference only if length is equal to 15
                     }
              })
               });
Run Code Online (Sandbox Code Playgroud)

有人可以指导我如何验证edittextpreference之前保存在sharedpreference中,以便我可以决定是否要保存它.

sti*_*ike 21

根据这里的文件

当用户更改了首选项时调用.这将在Preference的状态即将更新之前和状态持久之前调用.

它返回True以使用新值更新Preference的状态.

所以你可以做到以下几点

      editTextPreference
            .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference,
                        Object newValue) {
                    if (((newValue.toString().length() == 15) {
                          //
                          return true;
                     }
                     else{
                          // invalid you can show invalid message
                          return false;
                     }
              })
       });
Run Code Online (Sandbox Code Playgroud)