2012-07-03 17 views
21

पर टेक्स्टचेंज ईवेंट को कैसे लागू करें मैंने एक सरल ऐप विकसित किया, जैसे घटाव, अतिरिक्त। इस ऐप में मैं तीन एडिटटेक्स का उपयोग करता हूं, एक उत्तर के लिए और दूसरे प्रश्न के लिए। मैं टेक्स्ट चेंज इवेंट पर प्रश्न के उत्तर की गणना करना चाहता हूं। लेकिन जब मैं दोनों में टेक्स्ट चेंज इवेंट लागू करता हूं तो यह घटना होती है लेकिन ठीक से काम नहीं करती है। क्योंकि जब मैं सवाल का पहला EditText में पाठ में दर्ज घटना घटित लेकिन यह इस अपवाद फेंकता है:एडिटटेक्स्ट

07-03 16:39:48.844: E/EduApp Log :=>(12537): Error In Text change Event java.lang.NumberFormatException: unable to parse '' as integer 

मुझे क्या करना चाहिए? मैं पाठ परिवर्तन घटना के लिए TextWatcher का उपयोग करता हूं।

txtOne.addTextChangedListener(this); 
txtTwo.addTextChangedListener(this); 

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) {} 

उत्तर

37

मुझे लगता है कि आप खाली स्ट्रिंग " " जो इस समस्या का कारण है प्राप्त कर रहे हैं। सुनिश्चित करें कि आप अपने Edittext से एक खाली खाली स्ट्रिंग प्राप्त करें।

विचार करें कि आपके एडिटेक्स्ट में कोई मूल्य टाइप नहीं है, और आप इसका मूल्य प्राप्त करने और int में कनवर्ट करने की कोशिश कर रहे हैं, आप इस तरह की समस्या में भाग लेंगे।

edittext.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 
     if(!s.equals("")) 
       { //do your work here } 
     } 

    } 

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

    } 

    public void afterTextChanged(Editable s) { 

    } 
}); 

भी अधिक विचार के लिए इस लिंक की जाँच करें,

https://stackoverflow.com/a/3377648/603744

+0

इस प्रयास करें - अगर, हम s.equals ("") से CharSequence – Venky

+0

उपयोग StringUtils.isEmpty हो रही है के बाद से नहीं बल्कि (s.equals ('')!)। अधिक कुशल – MrWizard54

0

मैं तुम्हें जाँच करने के लिए अपने editText मूल्य पहले खाली है या नहीं की जरूरत है। कुछ ऐसा:

String textValue; 
textValue = edittext().getText().toString()); 
Log.v("","Value is " + textValue); 
if(textValue != ""){ 
    // Call Text Change Listener Here 
}else{ 
    // Throw error message or something 
} 

उम्मीद है कि यह मददगार है।

+0

तब लॉग बिल्ली क्या कहती है? –

1

मैं इस का इस्तेमाल किया और यह सही है:

public void afterTextChanged(Editable arg0) { 
    String inputs = input.getText().toString(); 
    Integer index=0; 
    if(!inputs.equals("")) 
     index=Integer.valueOf(inputs); 

} 
+0

दूसरे उत्तर से अलग नहीं दिखता है, क्या यह करता है ;-) और यदि फ़ील्ड सामग्री नहीं है तो पार्सएक्सप्शन फेंक देगा ... दृष्टांत। – kleopatra

1

मुझे लगता है कि सबसे अच्छा मामले में edittext प्रकार संख्या है ... (equle() फंक्शन) के बजाय पैरामीटर का उपयोग करें (लंबाई समारोह) पूर्व:

edittext.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 
     if (s.length() > 0) 
       { //do your work here } 
     } 

    } 

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

    } 

    public void afterTextChanged(Editable s) { 

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