web-dev-qa-db-fra.com

android: Le clavier logiciel effectue l'action lorsque la touche Terminé est enfoncée

J'ai un EditText. Je veux qu'après avoir tapé du texte, lorsque l'utilisateur appuie sur la touche Terminé de softkeybard, il doit effectuer une opération de recherche que j'ai également implémentée dans un événement de clic de bouton. Comment faire ça...???

61
Khawar Raza

Essaye ça

editText.setOnEditorActionListener(new OnEditorActionListener() {        
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){
            //do something
        }
    return false;
    }
});
170
Adil Soomro

Essaye ça

Cela fonctionne à la fois pourDONEetRETURN.

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

Vous attrapez la KeyEvent puis vérifiez son code d'activation. FLAG_EDITOR_ACTION est utilisé pour identifier les touches d'entrée provenant d'un IME dont la touche d'entrée a été étiquetée automatiquement "next" ou "done"

if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
    //your code here

Trouvez les docs ici .

Deuxième méthode

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;
    }
 }
});
0
Xar E Ahmer

Essaye ça

Cela fonctionnera dans les deux cas, que votre clavier affiche le signe enter ou le signe de la flèche suivante 

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

si vous faites face à la ligne rouge, faites ceci: ____. importer Keyevent et EditorInfo en appuyant sur alt + entrée toutes les erreurs le supprimeront correctement .......

0
Sunil