2016-10-04 4 views
0

, wenn ich (MY EditText) .addTextChangedListener als es funktioniert in allen Geräten unter Android 6.0, funktioniert aber nicht auf Android 6.0 und höheren Versionen. hier ist mein Code, die ichAddTextChangedListener funktioniert nicht auf Marshmallow

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")); 
      } 
     } 
    }); 

verwendet mir bitte helfen.

danke im voraus.

+0

Was meinst du nicht? Keine der Methoden wird bei einer Textänderung aufgerufen? – earthw0rmjim

+0

als was ich verwenden sollte? –

Antwort

1

Versuchen Sie es einfach, es war hilfreich für mich.

in oncreate Methode

inputEmail.addTextChangedListener(new MyTextWatcher(inputEmail)); 

und hier ist ein Code: -

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

Können Sie erklären, warum Ihr Code helfen sollte? Ich verstehe es einfach nicht –

+0

, weil dieser Code in marshmellow funktioniert – Nirmit

+0

Großartig :) Es ist keine Erklärung. Warum ändert sich die Ansicht einer Variablen in einem textWatcher? Diese Ansichtsvariable wird sogar nicht verwendet. –

Verwandte Themen