Phương thức Watcher kích hoạt trên mọi đầu vào ký tự. Vì vậy, tôi đã xây dựng mã này dựa trên phương thức 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);}
}
});
}
Để sử dụng nó, chỉ cần gọi như thế này:
onChange(YourEditText, new Runnable(){public void run(){
// V V YOUR WORK HERE
}}
);
Bạn có thể bỏ qua hàm comS bằng cách thay thế! ComS (dat.s, "" + EdTe.getText ()) bằng! Bằng hàm. Tuy nhiên, bản thân hàm bằng một số thời gian hoạt động không chính xác trong thời gian chạy.
Trình nghe onChange sẽ nhớ dữ liệu cũ của EditText khi người dùng nhập tiêu điểm và sau đó so sánh dữ liệu mới khi người dùng mất tiêu điểm hoặc chuyển sang đầu vào khác. Nếu so sánh Chuỗi cũ không giống với Chuỗi mới, nó sẽ kích hoạt công việc.
Nếu bạn chỉ có 1 EditText, thì bạn sẽ cần tạo chức năng ClearFocus bằng cách tạo một Micro EditText trong suốt bí mật tối thượng 😸 bên ngoài cửa sổ 😽 và yêu cầu lấy tiêu điểm vào nó, sau đó ẩn bàn phím qua Trình quản lý phương thức nhập.