El método Watcher se activa con cada entrada de carácter. Entonces, construí este código basado en el método onFocusChange:
public static boolean comS(String s1,String s2){
if (s1.length()==s2.length()){
int l=s1.length();
for (int i=0;i<l;i++){
if (s1.charAt(i)!=s2.charAt(i))return false;
}
return true;
}
return false;
}
public void onChange(final EditText EdTe, final Runnable FRun){
class finalS{String s="";}
final finalS dat=new finalS();
EdTe.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {dat.s=""+EdTe.getText();}
else if (!comS(dat.s,""+EdTe.getText())){(new Handler()).post(FRun);}
}
});
}
Para usarlo, simplemente llame así:
onChange(YourEditText, new Runnable(){public void run(){
// V V YOUR WORK HERE
}}
);
Puede ignorar la función comS reemplazando! ComS (dat.s, "" + EdTe.getText ()) con la función! Equal. Sin embargo, la función de igual en sí misma en algún momento no funciona correctamente en tiempo de ejecución.
El oyente de onChange recordará los datos antiguos de EditText cuando el usuario se concentre en escribir, y luego comparará los nuevos datos cuando el usuario pierda el foco o salte a otra entrada. Si se compara la cadena antigua no es la misma cadena nueva, se activa el trabajo.
Si solo tiene 1 EditText, entonces tendrá que hacer una función ClearFocus creando un Ultimate Secret Transparente Micro EditText 😸 fuera de las ventanas 😽 y solicite el foco, luego oculte el teclado mediante Import Method Manager.