2011-09-27 122 views
8

我有PreferenceActivity有2个字段。验证偏好设置。 Android

  1. 甲URL
  2. 时间,以秒

我需要验证第一个为一个有效的URL,第二个用于一个整数值。我如何用标准手段来做到这一点?

回答

14

下面是一些代码实现您的片段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; 
     } 
    }); 
} 
+0

该字段的新值保存在名为newValue的对象中。使用newValue.tostring(Your_Test) –

+0

首选项不会被保存,如果我们使用这个。 –

3

您可以在xml中为这些字段使用android:inputType属性,这会向用户显示一个键盘,以便以特定格式输入值。

查看更多

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

但是,这并不能保证该URL不会畸形。你需要在提交处理程序中使用正则表达式来检查。

+1

呀。我通过onchangelistener和正则表达式匹配器进行验证 –