android - ¿Cómo puedo saber cuándo un EditText pierde el foco?
android-edittext lostfocus (3)
Necesito detectar cuando un EditText
pierde el foco, he buscado otras preguntas pero no encontré una respuesta.
Utilicé OnFocusChangeListener
como este
OnFocusChangeListener foco = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
}
};
Pero, no funciona para mí.
Haga que su Activity
implemente OnFocusChangeListener()
si desea un uso factorizado de esta interfaz, por ejemplo:
public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{
En su OnCreate
puede agregar un oyente, por ejemplo:
editTextResearch.setOnFocusChangeListener(this);
editTextMyWords.setOnFocusChangeListener(this);
editTextPhone.setOnFocusChangeListener(this);
entonces Android Studio te pedirá que agregues el método desde la interfaz, lo aceptes ... será como:
@Override
public void onFocusChange(View v, boolean hasFocus) {
// todo your code here...
}
y como tienes un código factorizado, tendrás que hacer eso:
@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:/"");
}
}
cualquier cosa que codifique en el !hasFocus
es para el comportamiento del elemento que pierde el foco, ¡eso debería ser el truco! ¡Pero tenga en cuenta que en tal estado, el cambio de enfoque podría sobrescribir las entradas del usuario!
Implementar en onFocusChange
de setOnFocusChangeListener
y hay un parámetro booleano para hasFocus. Cuando esto es falso, pierdes el foco en otro control.
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
}
}
});
Está trabajando apropiadamente
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();
}
}