2016-05-06 4 views
0

Ich habe zwei EditTexts und ein Knopf in meinem LayoutonEditorAction in android

ein EditText Username genannt und ein anderes namens Passwort und die Taste aufgerufen Anmeldung

die Taste am Anfang

deaktiviert was ich will, ist, dass, wenn überhaupt etwas in EditText Username eingegeben wird, und Passwort sollte der Knopf

hier aktiviert werden, ist das, was ich versuchte,

@Override 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
{ 
    if(!TextUtils.isEmpty(UserName.getText()) && !TextUtils.isEmpty(PassWord.getText())) 
    { 
     Login.setEnabled(true); 
     return true; 
    } 

    return false; 

wenn ich diesen Code auf die Schaltfläche Login als deaktiviert Start laufen und es bleibt deaktiviert, wenn ich Eingang etwas in den beiden EditTexts ohne Klick auf die Schaltfläche Enter

es funktioniert nur, wenn ich die Enter-Taste klicken

ist es eine Möglichkeit, um es Arbeit zu machen, wenn eine beliebige Taste auf der Tastatur gedrückt wird und beide der EditTexts nicht leer

Vielen Dank für Hilfe

+0

Was Sie brauchen, ist ein Text-Watcher auf beide Texte bearbeiten, weil onEditorAction etwas anderes ist (Enter, Next, Done - spezielle Tasten auf der Tastatur). – Vucko

Antwort

3

Sie können TextChangedListener Klasse für EditTexts verwenden für Veranstaltungen, wenn die Textänderungen in ihnen zuzuhören. Ich habe einen Code für diese in einem meiner Projekte:

private boolean heightFilled; 
private boolean weightFilled; 

private void setInputListeners() { 
    etHeight.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      heightFilled = s.length() > 0; 
      calculateButton.setEnabled(heightFilled && weightFilled); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

    etWeight.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      weightFilled = s.length() > 0; 
      calculateButton.setEnabled(heightFilled && weightFilled); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
} 

Dies sollte funktionieren, wenn Sie die Namen der Button ändern und die EditText s.

+0

Arbeitete! Danke für Ihre Hilfe –

1

Sie müssen einen textgeänderten Listener verwenden. Von dort aus können Sie als Eingabe prüfen, ob beide nach der Prüfung einen Eingabe- und einen Call-Code zur Aktivierung Ihrer Schaltfläche haben.

editText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      //enter code here to check if your edittexts have content 
      //then do stuff with your button 

      } 

     } 
    }); 
Verwandte Themen