我想验证EditTextPreference对话框的输入(输入6位数)。
这是我的(相关)preferences.xml代码段的样子:
<!--EditTextPreference-->
<com.app.preferences.UpdatePincodePreference
android:key="PIN_CODE_PREFERENCE"
android:title="@string/pincode_preference_title"
android:summary="@string/pincode_preference_summary"
android:dialogTitle="@string/pincode_preference_dialog_title"
android:dialogMessage="@string/pincode_preference_dialog_message"
android:inputType="number"
/>
如何测试用户未在首选项对话框的EditText中输入少于或多于6位的数字?
基本上我需要在OK按钮上设置一个onClickListener(),但是如何抓住我没有定义的OK按钮。它是EditTextPreference的默认视图,Cancel按钮也是如此。
问题与“how to call the ok button in the EditTextPreference”完全相同,但现在已解决了已接受解决方案中提供的链接。
答案 0 :(得分:2)
该解决方案的作者已将他的项目从Google Code迁移到GitHub。您可以在https://github.com/Knickedi/android-toolbox找到新项目,并指向他所指的两个文件的链接,以验证DialogPreference
并验证EditTextPreference
答案 1 :(得分:2)
这可以使用setOnPreferenceChangeListener()
来实现public UpdatePasswordPreference(Context context, AttributeSet attrs) {
this.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
{
@Override
public boolean onPreferenceChange(Preference preference, Object newValue)
{
MobicopLogger.d("Preference input changed");
try
{
if(newValue.toString().length() != 6)
return false;
else
return true;
}
catch(Exception e)
{
return false;
}
}
});
}
答案 2 :(得分:0)
创建自定义布局,并通过以下覆盖方法将其应用于首选项:
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder); //To change body of overridden methods use File | Settings | File Templates.
builder.setView(LayoutInflater.from(ctx).inflate(R.layout.custome_preference_layout,null));
}