Il metodo Watcher si attiva a ogni input di carattere. Quindi, ho creato questo codice basato sul metodo 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);}
}
});
}
Per usarlo, chiama in questo modo:
onChange(YourEditText, new Runnable(){public void run(){
// V V YOUR WORK HERE
}}
);
È possibile ignorare la funzione comS sostituendo! ComS (dat.s, "" + EdTe.getText ()) con la funzione! Equal. Tuttavia, la stessa funzione di uguale qualche volta non funziona correttamente in fase di esecuzione.
Il listener onChange ricorderà i vecchi dati di EditText durante la digitazione del focus dell'utente, quindi confronterà i nuovi dati quando l'utente perde il focus o passa a un altro input. Se si confronta la vecchia stringa non la stessa nuova stringa, viene attivato il lavoro.
Se hai solo 1 EditText, allora dovrai creare una funzione ClearFocus creando un Micro EditText trasparente Ultimate Secret 😸 fuori dalle finestre 😽 e richiedendo lo stato attivo, quindi nascondi la tastiera tramite Import Method Manager.