wake-up-neo.com

Wie kann ich wissen, wann ein EditText den Fokus verliert?

Ich muss feststellen, wann eine EditText den Fokus verliert, ich habe andere Fragen gesucht, aber keine Antwort gefunden.

Ich habe OnFocusChangeListener so benutzt

OnFocusChangeListener foco = new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        // TODO Auto-generated method stub

    }
};

Aber es funktioniert nicht für mich.

135
japuentem

Implementiere onFocusChange von setOnFocusChangeListener und es gibt einen booleschen Parameter für hasFocus. Wenn dies falsch ist, haben Sie den Fokus auf ein anderes Steuerelement verloren.

 EditText txtEdit = (EditText) findViewById(R.id.edittxt);

 txtEdit.setOnFocusChangeListener(new OnFocusChangeListener() {          
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
               // code to execute when EditText loses focus
            }
        }
    });
303

Lassen Sie Ihre ActivityOnFocusChangeListener() implementieren, wenn Sie diese Schnittstelle faktorisiert verwenden möchten Beispiel:

public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{

In Ihrer OnCreate können Sie beispielsweise einen Listener hinzufügen:

editTextResearch.setOnFocusChangeListener(this);
editTextMyWords.setOnFocusChangeListener(this);
editTextPhone.setOnFocusChangeListener(this);

dann wird Android Studio Sie dazu auffordern, die Methode über die Benutzeroberfläche hinzuzufügen, akzeptieren Sie es ...

@Override
public void onFocusChange(View v, boolean hasFocus) {
// todo your code here...
}

und da Sie einen faktorisierten Code haben, müssen Sie das nur tun:

@Override
public void onFocusChange(View v, boolean hasFocus) {
   if (hasFocus) {
        editTextResearch.setText("");
        editTextMyWords.setText("");
        editTextPhone.setText("");
    }
    if (!hasFocus){
        editTextResearch.setText("BlaBlaBla");
        editTextMyWords.setText(" One Two Tree!");
        editTextPhone.setText("\"your phone here:\"");
    }
}

alles, was Sie in !hasFocus kodieren, ist für das Verhalten des Elements, das den Fokus verliert. Beachten Sie jedoch, dass in diesem Zustand die Änderung des Fokus die Einträge des Benutzers überschreiben kann!

8
Cerberus

Kotlin Weg

editText.setOnFocusChangeListener { _, hasFocus ->
    if (!hasFocus) {  }
}
1
Achraf Amil

Es funktioniert richtig

EditText et_mobile= (EditText) findViewById(R.id.edittxt);

 et_mobile.setOnFocusChangeListener(new OnFocusChangeListener() {          
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
               // code to execute when EditText loses focus
 if (et_mobile.getText().toString().trim().length() == 0) {
                        CommonMethod.showAlert("Please enter name", FeedbackSubmtActivity.this);
                    }
            }
        }
    });



public static void showAlert(String message, Activity context) {

    final AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setMessage(message).setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            });
    try {
        builder.show();
    } catch (Exception e) {
        e.printStackTrace();
    }

}
0
Keshav Gera

Mit Java 8 Lambda-Ausdruck:

editText.setOnFocusChangeListener((v, hasFocus) -> {
    if(!hasFocus) {
        String value = String.valueOf( editText.getText() );
    }        
});
0
Sandeep Yohans