有没有人有示例代码来验证用户在首选项中输入的文本?例如,我有一个 EditTextPreference 供用户输入电子邮件地址。我想验证输入的电子邮件地址的格式,如果格式不正确,我会弹出一个警告对话框。有人有任何示例代码吗?谢谢
问问题
10552 次
3 回答
9
当我试图做同样的事情时,你的问题是谷歌早期的热门话题,所以希望这对某人有所帮助。这是我今天一起破解的东西,它演示了 OnPreferenceChangeListener,从而允许您停止无效更改。
在你的片段中:
@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;
}
});
}
于 2012-07-17T22:40:05.853 回答
9
实现 Preference.OnPreferenceChangeListener
boolean onPreferenceChange(偏好偏好,对象 newValue)
当用户更改首选项时调用。这在 Preference 的状态即将更新和状态保持之前被调用。
返回 True 以使用新值更新 Preference 的状态。
所以可以直接返回值校验的结果。
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);
}
});
}
}
于 2010-04-16T14:44:50.603 回答
2
我会使用Preference.OnPreferenceChangeListener
而不是 SharedPreferences.OnSharedPreferenceChangeListener
.
前者允许您在新值被持久化之前验证它(并防止它被持久化)而不是之后。
于 2012-04-03T14:39:02.610 回答