错误没有隐藏在触摸侦听器上,单击侦听器:Android

时间:2014-04-07 11:41:21

标签: android

我有一个Android程序,文本框很少。当value为null时,我设置错误。 我想要触摸错误应该消失,键盘显示。但是显示错误。但是当我触摸或点击时不会隐藏。

else if(txtLdays.getText().toString().trim().equals(""))
 {
     txtLdays.requestFocus();   
     txtLdays.setError("Please Enter Number of Days " );  
    // delay();

     return false;
 }

和我在oncreate上调用的编辑文本函数

        txtLdays = (EditText) findViewById(R.id.etLdays);
        txtLdays.setInputType(InputType.TYPE_CLASS_NUMBER);
        txtLdays.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
        txtLdays.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);
        txtLdays.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
        txtLdays.setRawInputType(Configuration.KEYBOARD_12KEY);

        txtLdays.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(5,1)});

txtLdays.setOnTouchListener(new View.OnTouchListener(){
            public boolean onTouch(View view, MotionEvent motionEvent) {                                                       
                 // your code here....
                txtLdays.setError(null);      

                 return false;
            }
        });
        txtLdays.setOnClickListener(new View.OnClickListener() 
        {
                @Override
                public void onClick(View v) 
                {
                     txtLdays.requestFocus();   
                    txtLdays.setError(null); 
                }

            });

2 个答案:

答案 0 :(得分:0)

不确定问题是什么,但你可以像

一样使用
else if(txtLdays.getText().toString().trim().length()==0)
             {

                 txtLdays.requestFocus();   
                 txtLdays.setError("Please Enter Number of Days " );  
                // delay();

                 return false;
             }

和另一个选项

使用TextWatcher

 txtLdays.addTextChangedListener(new TextWatcher() {
                public void afterTextChanged(Editable s) {
                    //Validation.hasText(txtLdays);
                                     your conditions here 
                }

                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                }

                public void onTextChanged(CharSequence s, int start, int before,
                        int count) {
                }
            });

答案 1 :(得分:0)

尝试清除错误当你的EditText接收焦点

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            editText.setError(null);
        } 
    }
});