setError与onClick for EditText一起使用

时间:2017-09-08 11:49:31

标签: android android-edittext

使用setError()方法显示正常错误:

Screenshot #1

问题:

Screenshot #2

好的,我在同一个对话框中有另一个EditText,其OnClickListener用于显示DatePicker对话框。当我setError()显示红色警报图标时,当我点击该图标时,OnClick上的EditText仍会处理该事件并弹出DatePicker,因此我无法查看错误消息。

我想要的是:如果我点击图标,它必须显示错误消息,如果我点击图标外面,它应显示DatePicker

4 个答案:

答案 0 :(得分:2)

哦,伙计,我2天前确实遇到过这个问题。我发现没有办法使它既有焦点(为了显示消息,也创建了日期选择器的弹出窗口。我最终做的是将m_SomeProperty包装到EditText之类的这样:

TextInputLayout

然后我不是在编辑文本上设置错误,而是在<android.support.design.widget.TextInputLayout android:id="@+id/birthDateInputLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/input_birth_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/birth_date_hint" android:inputType="date" /> </android.support.design.widget.TextInputLayout> 上设置错误,而不是像这样:

TextInputLayout
  

注意:看起来与birthDateInputLayout.setErrorEnabled(true); birthDateInputLayout.setError("This field cannot be empty."); 上设置错误的常规方式完全相同,但它确实看起来不错并且解决问题的方式略有不同。

以下是它的外观截图: enter image description here

答案 1 :(得分:0)

一个简单的解决方案是检查onclickListener中的错误是否为null。 即,

if(((EditText)view).getError() == null) {
//Handle your click for showing picker
}

答案 2 :(得分:0)

您可以根据您的代码使用以下代码 当完成所有字段和第二个日期编辑文本设置错误为null。任何查询,您可以询问

mEditText.setError(null);//removes error
mEditText.clearFocus();    //clear focus from edit text

答案 3 :(得分:0)

试试这个,

onClick(View v){
    if(editText.getError() != null ){
       editText.requestFocus(); // to show error message
    }else{
        // open date picker dialog here or do you stuff here 
    }

希望有所帮助