web-dev-qa-db-fra.com

Evénement pour gérer le focus du EditText

Quelqu'un peut-il me suggérer un événement lié à l'objectif de la EditText? Mon application contient un EditText qui accepte une URL.

Maintenant, mon problème est que, après que l'utilisateur entrera l'URL dans le champ et se déplacera plus loin, sans aucun événement click, c'est-à-dire que lorsque le focus passera du EditText, il devrait détecter l'URL entrée et disparaître. au serveur.

Si je reçois la réponse en utilisant l'analyse Json, ce sera plus pratique.

128
Sheetal Shelar

Voici l'exemple d'auditeur de focus.

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});
486
Pratik
  1. Déclarez l'objet de EditText au sommet de la classe:

     EditText myEditText;
    
  2. Recherchez EditText dans onCreate Function et setOnFocusChangeListener de EditText:

    myEditText = findViewById(R.id.yourEditTextNameInxml); 
    
    myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if (!hasFocus) {
                         Toast.makeText(this, "Focus Lose", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, "Get Focus", Toast.LENGTH_SHORT).show();
                    }
    
                }
            });
    

Ça fonctionne bien.

10
Wajid khan

Pour ceux d'entre nous pour qui cette solution valable ci-dessus ne fonctionnait pas, il existe une autre solution de contournement ici

 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            if(!isFocused)
            {
                Toast.makeText(MainActivity.this,"not focused",Toast.LENGTH_SHORT).show();

            }
        }
    });
3
Dev_Man

quand à Kotlin cela ressemblera à ceci:

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }
1
arjava