Ho un EditText. Voglio che dopo aver digitato del testo, quando l'utente preme il tasto Fine di softkeybard, dovrebbe eseguire alcune operazioni di ricerca che ho implementato anche in un evento click del pulsante. Come farlo...???android: Softkeyboard esegue un'azione quando viene premuto il tasto Fine
risposta
Prova questa
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
//do something
}
return false;
}
});
Grazie, ha funzionato ... –
Prova questa
Funziona sia per FATTO e 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;
}
});
si cattura il KeyEvent
e poi controllarne il codice chiave. FLAG_EDITOR_ACTION
viene utilizzato per identificare immettere le chiavi che vengono da un IME cui entrare chiave è stata auto-etichettato come "next" o "fatto"
if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
//your code here
Trova la documentazione here.
Secondo metodo
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;
}
}
});
Prova questa
Questo funziona sia in condizioni se la tastiera sta mostrando immettere segno o seguente freccia segno
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;
}
});
se ur rivolto linea rossa quindi fai questo ... import Keyevent e EditorInfo premendo alt + invio quindi tutti gli errori rimuoveranno correttamente .......
Un modo migliore con Kotlin in questo commento: https://stackoverflow.com/a/48810268/1912924 –