2012-08-30 6 views
6

में बैकस्पेस का पता लगाएं मैं TextWatcher का उपयोग कर रहा हूं और TextWatcher.afterTextChange ईवेंट में बैकस्पेस कुंजी का पता लगाने में असमर्थ हूं। मैं textWatcher घटना में कुछ स्थितियों पर textView को साफ़ करना चाहता हूं।टेक्स्टवॉचर

public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 
    // I want to detect backspace key here 
} 
+0

कृपया अपने 'टेक्स्टवॉचर' के लिए कोड कृपया? – Swayam

+0

सार्वजनिक शून्य afterTextChanged (संपादन योग्य रों) { \t \t \t \t \t \t \t // TODO स्वत: निर्मित विधि ठूंठ \t \t \t \t \t \t \t // मैं बैकस्पेस कुंजी यहाँ \t \t \t \t \t \t \t पता लगाने के लिए चाहते हैं \t \t \t \t \t} –

उत्तर

9

KeyListener आपकी दोनों स्थितियों को पूरा कर सकता है।

mEditText.setOnKeyListener(new OnKeyListener() {     
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if(keyCode == KeyEvent.KEYCODE_DEL){ 
      //on backspace 
      } 
    return false   
     } 
}); 

इसी onKey() अंदर, आप, हालत की जांच करने के लिए जब आप textView साफ़ करना चाहते हैं कई जांच बयान डाल सकते हैं।

संपादित करें:रूप @RankoR तरह पर्याप्त था बताते, ध्यान में रखना कृपया है कि केवल हार्डवेयर कीबोर्ड और न नरम कीबोर्ड के लिए onKeyListener() काम करता है।

+2

OnKeyListener केवल एचडब्ल्यू कीबोर्ड के लिए काम करता है। – arts777

+0

@ रैंकोआर: हाँ, मुझे इस तथ्य से अवगत है कि ऑनलिस्टर सॉफ्ट-कीबोर्ड के लिए काम नहीं करता है। लेकिन अगर आप एक बार फिर से सवाल पूछते हैं, तो आप देखेंगे कि सवाल सॉफ्ट-कीबोर्ड के लिए विशिष्ट नहीं है। लेकिन, हाँ .. फिर फिर, आपने एक बहुत अधिक मान्य बिंदु बनाया है। अपना बिंदु शामिल करने के लिए मेरे उत्तर को संपादित करेंगे। – Swayam

+0

@ रैंकोआर: उत्तर संपादित किया गया। शायद आप अपने * डाउनवोट * पर पुनर्विचार कर सकते हैं। : डी – Swayam

10

TextWatcher में एक बैकस्पेस का पता लगाने के लिए, आप चर गिनती कि (गिनती 0 हो सकता है अगर एक बैकस्पेस दर्ज किया गया था) onTextChange समारोह में पारित हो जाता है, इस तरह की जाँच कर सकते हैं:

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

    if (react) { 
    if (count == 0) { 
     //a backspace was entered 
    } 

    //clear edittext 
    if(/*condition*/) { 
     react = false; 
     setText(""); 
     react = true; 
    } 
    } 
} 

प्रतिक्रिया boolean है setText() फ़ंक्शन के लिए आवश्यक अन्यथा यह रिकर्सिव हो जाता है। उम्मीद है की यह मदद करेगा!

+6

यह कॉल वापस नहीं देता है जब कोई टेक्स्ट परिवर्तन नहीं होगा, जब s.length() = 0, जो भी कुंजी दबाया जाता है वहां कोई कॉल वापस नहीं होगा .. – DJphy

+1

'onTextChanged' में कोई कॉलबैक नहीं मिला है जब बैक बटन दबाया जाता है और 'EditText' में कोई वर्ण नहीं होता है। निश्चित नहीं है कि यह जवाब यहां क्यों निकलता है! – sud007

+0

यदि टाइप किया गया एक सफेद स्थान है तो भी == 0 –

संबंधित मुद्दे