【问题标题】:Android EditText preference validationAndroid EditText 首选项验证
【发布时间】:2013-03-13 18:22:44
【问题描述】:

我使用 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 之前对其进行验证,以便我决定是否要保存它。

【问题讨论】:

    标签: android sharedpreferences edittextpreference


    【解决方案1】:

    根据文档here

    当用户更改首选项时调用。这就是所谓的 在 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;
                         }
                  })
           });
    

    【讨论】:

    • 所以我通过 addPreferencesFromResource(R.xml.settings); 从 xml 加载首选项并在 PreferenceFragment 中实现 SharedPreferences.OnSharedPreferenceChangeListener 和 Preference.OnPreferenceChangeListener ,而不是像您描述的那样将其设置为 EditTextPreference 。永远不会调用 onPreferenceChange 侦听器。只有 onSharedPreferenceChanged 函数。你为什么这么认为?
    • 如果你没问题注册 udacity this page 是一个非常好的资源
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多