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.
android
key
listener
android-softkeyboard
Khawar Raza
quelle
quelle
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; } });
quelle
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; } });
quelle
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; } } });
quelle
Versuche dies
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 .......
quelle