2016-10-04 228 views
0

当我使用(我的EditText).addTextChangedListener比它在Android 6.0以下的所有设备中工作,但不适用于Android 6.0和高版本。这里是我使用的代码addTextChangedListener不工作棉花糖

email.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
            int count) { 
     } 

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

     @Override 
     public void afterTextChanged(Editable s) { 
      if (!isValidEmail(s.toString())) { 
       email.setTextColor(Color.parseColor("#EB2525")); 
      } else { 
       email.setTextColor(Color.parseColor("#088A08")); 
      } 
     } 
    }); 

请帮帮我。

在此先感谢。

+0

你说的不工作呢?没有任何方法在文本更改上被调用? – earthw0rmjim

+0

比我应该使用? –

回答

1

只是试试这个,这对我很有帮助。

在onCreate方法

inputEmail.addTextChangedListener(new MyTextWatcher(inputEmail)); 

这里

是一些代码: -

private class MyTextWatcher implements TextWatcher { 

    private View view; 

    private MyTextWatcher(View view) { 
     this.view = view; 
    } 

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    } 

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    } 

    public void afterTextChanged(Editable editable) { 
     switch (view.getId()) { 
      case R.id.input_email: 
       validateEmail(); 
       break; 

     } 
    } 
} 


private boolean validateEmail() { 
    String email = inputEmail.getText().toString().trim(); 

    if (email.isEmpty() || !isValidEmail(email)) { 
     inputLayoutEmail.setError(getString(R.string.err_msg_email)); 
     return false; 
    } else { 
     inputLayoutEmail.setErrorEnabled(false); 
    } 

    return true; 
} 
    private static boolean isValidEmail(String email) { 
    return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 
} 
-1
edt_email.addTextChangedListener(new GenericTextWatcher(edt_email)); 

private class GenericTextWatcher implements TextWatcher { 

    private View view; 

    private GenericTextWatcher(View v) { 
     this.view = v; 
    } 

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    } 

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    } 

    public void afterTextChanged(Editable editable) { 

    } 
} 
+0

你能解释为什么你的代码应该有所帮助吗?我只是不明白 –

+0

因为这段代码是在marshmellow工作条件 – Nirmit

+0

伟大的:)这不是解释。为什么将视图保存到textWatcher中的变量会改变什么?这个视图变量甚至没有使用。 –