Metode Watcher mengaktifkan setiap input karakter. Jadi, saya membuat kode ini berdasarkan metode 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);}
}
});
}
Untuk menggunakannya, panggil saja seperti ini:
onChange(YourEditText, new Runnable(){public void run(){
// V V YOUR WORK HERE
}}
);
Anda dapat mengabaikan fungsi comS dengan mengganti! ComS (dat.s, "" + EdTe.getText ()) dengan fungsi! Equal. Namun fungsi yang sama itu sendiri kadang tidak bekerja dengan benar dalam waktu proses.
Pendengar onChange akan mengingat data lama EditText saat pengguna fokus mengetik, lalu membandingkan data baru tersebut saat pengguna kehilangan fokus atau beralih ke input lain. Jika membandingkan String lama bukan String baru yang sama, tindakan tersebut akan diaktifkan.
Jika Anda hanya memiliki 1 EditText, maka Anda perlu membuat fungsi ClearFocus dengan membuat EditText Mikro Transparan Rahasia Utama 😸 di luar jendela 😽 dan meminta fokus ke sana, lalu menyembunyikan keyboard melalui Manajer Metode Impor.