有没有示例代码可以验证用户在首选项中输入的文本?例如,我有一个EditTextPreference供用户输入电子邮件地址。我想验证输入的电子邮件地址格式是否正确,如果格式不正确,则弹出警示对话框。请问有人有这方面的示例代码吗?谢谢!
有没有示例代码可以验证用户在首选项中输入的文本?例如,我有一个EditTextPreference供用户输入电子邮件地址。我想验证输入的电子邮件地址格式是否正确,如果格式不正确,则弹出警示对话框。请问有人有这方面的示例代码吗?谢谢!
实现Preference.OnPreferenceChangeListener接口
boolean onPreferenceChange(Preference preference, Object newValue)
当用户更改了偏好设置时调用。在偏好设置的状态即将更新且状态被持久化之前调用此方法。
如果需要使用新值更新偏好设置的状态,请返回True。
因此,您可以直接返回值验证的结果。
public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
findPreference("mail_preference_key").setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return Pattern.matches("mailPattern", (String) newValue);
}
});
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
Your_Pref = (EditTextPreference) getPreferenceScreen().findPreference("Your_Pref");
Your_Pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Boolean rtnval = true;
if (Your_Test) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Invalid Input");
builder.setMessage("Something's gone wrong...");
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
rtnval = false;
}
return rtnval;
}
});
}
Preference.OnPreferenceChangeListener
而不是 SharedPreferences.OnSharedPreferenceChangeListener
。