2011-09-12 12 views
17

मुझे यह जानने की जरूरत है कि एडिटटेक्स्ट बदल दिया गया था या नहीं, उपयोगकर्ता ने फ़ील्ड में कुछ टेक्स्ट इनपुट किया था या नहीं, लेकिन केवल स्ट्रिंग बदल दिया गया था।कैसे जांचें कि कोई संपादन टेक्स्ट बदल गया था या नहीं?

उत्तर

42

आप की जरूरत है एक TextWatcher

इसे यहाँ देखें कार्रवाई में:

EditText text = (EditText) findViewById(R.id.YOUR_ID); 
text.addTextChangedListener(textWatcher); 


private TextWatcher textWatcher = new TextWatcher() { 

    public void afterTextChanged(Editable s) { 
    } 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 

    } 
} 
2

लागू एक TextWatcher। यह आपको तीन विधियों, beforeTextChanged, onTextChanged, और afterTextChanged देता है। आखिरी विधि को तब तक नहीं बुलाया जाना चाहिए जब तक कि कुछ भी बदल नहीं जाता है, इसलिए इसके लिए उपयोग करना एक अच्छी बात है।

8

आप कीस्ट्रोक्स को सुनने के लिए अपना मन बदलते हैं आप

EditText et = (EditText) findViewById(R.id.search_box); 

    et.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      //key listening stuff 
      return false; 
     } 
    }); 

OnKeyListener उपयोग कर सकते हैं लेकिन Johe का जवाब आप क्या जरूरत है।

1

यह वास्तव में मेरे लिए

EditText text = (EditText) findViewById(R.id.YOUR_ID); 

text.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

     if(your_string.equals(String.valueOf(s))) { 
      //do something 
     }else{ 
      //do something 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}); 
काम किया
संबंधित मुद्दे