验证偏好设置。安卓

10

我有一个具有两个字段的PreferenceActivity

  1. URL
  2. 秒数

我需要验证第一个字段是否为有效的URL,第二个字段是否为整数值。如何使用标准方式进行验证?

2个回答

17

以下是在您的fragment中实现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;
        }
    });
}

该字段的新值存储在一个名为newValue的对象中。使用newValue.tostring来进行(Your_Test)。 - Ryan Heitner
如果我们使用这种方法,偏好设置将不会被保存。 - Rishabh Srivastava

3
你可以在xml文件中使用android:inputType属性来设置这些字段,这将向用户显示一个键盘,以特定的格式输入值。
查看更多

http://developer.android.com/reference/android/text/InputType.html

但这并不保证URL不会格式错误。您需要在提交处理程序中使用正则表达式进行检查。

1
是的,我通过OnChangeListener和RegExp Matcher进行了验证。 - Jevgeni Smirnov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接