Метод Watcher запускається з кожного вводу символів. Отже, я створив цей код на основі методу 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);}
}
});
}
Для його використання просто зателефонуйте так:
onChange(YourEditText, new Runnable(){public void run(){
// V V YOUR WORK HERE
}}
);
Ви можете ігнорувати функцію comS, замінивши! ComS (dat.s, "" + EdTe.getText ()) на! Рівну функцію. Однак однакова функція сама деякий час працює неправильно під час виконання.
Слухач onChange запам'ятає старі дані EditText під час введення фокусу користувача, а потім порівняє нові дані, коли користувач втратить фокус або перейде до іншого вводу. Якщо порівнювати стару струну з не такою ж новою, вона заповнює роботу.
Якщо у вас є лише 1 EditText, тоді вам потрібно буде зробити функцію ClearFocus, зробивши Ultimate Secret Transparent Micro EditText 😸 поза вікнами 😽, і попросити зосередитись на ньому, а потім приховати клавіатуру за допомогою диспетчера методів імпорту.