Ich habe einen EditText. Ich möchte, dass der Benutzer nach dem Eingeben von Text, wenn er die Done
Taste des Softkeyboards drückt , direkt einen Suchvorgang ausführt, den ich auch in einem Schaltflächenklickereignis implementiert habe.
Ich habe einen EditText. Ich möchte, dass der Benutzer nach dem Eingeben von Text, wenn er die Done
Taste des Softkeyboards drückt , direkt einen Suchvorgang ausführt, den ich auch in einem Schaltflächenklickereignis implementiert habe.
Antworten:
Versuche dies
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
//do something
}
return false;
}
});
Versuche dies
Es funktioniert sowohl für DONE als auch für RETURN .
EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| actionId == EditorInfo.IME_ACTION_DONE) {
// Do your action
return true;
}
return false;
}
});
Sie fangen den KeyEvent
und überprüfen dann seinen Schlüsselcode. FLAG_EDITOR_ACTION
wird verwendet, um Eingabetasten zu identifizieren, die von einem IME stammen, dessen Eingabetaste automatisch mit "next" oder "done" gekennzeichnet wurde.
if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
//your code here
Finden Sie die Dokumentation hier .
Zweite Methode
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
int result = actionId & EditorInfo.IME_MASK_ACTION;
switch(result) {
case EditorInfo.IME_ACTION_DONE:
// done stuff
break;
case EditorInfo.IME_ACTION_NEXT:
// next stuff
break;
}
}
});
Dies funktioniert in beiden Fällen, unabhängig davon, ob auf Ihrer Tastatur das Eingabezeichen oder das nächste Pfeilzeichen angezeigt wird
YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT)
{
//Perform Action here
}
return false;
}
});
Wenn Sie vor einer roten Linie stehen, tun Sie dies ... importieren Sie Keyevent und EditorInfo, indem Sie Alt + Eingabetaste drücken, dann werden alle Fehler entfernt .......