प्रत्येक वर्ण इनपुट पर वॉचर विधि आग लगाती है। इसलिए, मैंने इस कोड को 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 फ़ंक्शन को। Com (dat.s, "" + EdTe.getText ()) के स्थान पर समान फ़ंक्शन से अनदेखा कर सकते हैं। हालाँकि समान कार्य कुछ समय में ही सही समय पर सही ढंग से काम नहीं करता है।
जब उपयोगकर्ता टाइपिंग पर ध्यान केंद्रित करता है, तब उपयोगकर्ता को फोकस खो जाने या अन्य इनपुट पर जाने पर नए डेटा की तुलना करें। यदि पुराने स्ट्रिंग की तुलना एक ही नए स्ट्रिंग से नहीं की जाती है, तो यह कार्य को फायर करता है।
यदि आपके पास केवल 1 EditText है, तो u को विंडो के बाहर एक अल्टीमेट सीक्रेट ट्रांसपेरेंट माइक्रो EditText Edit बनाकर ClearFocus फंक्शन करना होगा और फ़ोकस करने का अनुरोध करना होगा, फिर कीबोर्ड को इम्पोर्ट मेथड मैनेजर के माध्यम से छिपाएँ।