2016-10-04 172 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中的變量會改變什麼?這個視圖變量甚至沒有使用。 –