10

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

我正在尝试做这样的事情,但这首先保存了我想的偏好。

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
                     }
              })
               });

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

4

1 回答 1

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;
                     }
              })
       });
于 2013-03-24T04:08:00.577 回答