2011-11-22 14 views
12

में मैं बटन द्वारा अक्षम करना चाहते हैं EditText में शब्द कम से कम 3 शब्द है के अनुसार, और मैं सक्षम करना चाहते हैं, तो EditText में शब्द अधिक से अधिक 3 शब्द तो कर रहे हैं ऐसा इसलिए है कि यह क्लिक किया जा सकता है।सक्षम करें और बटन को निष्क्रिय EditText में पाठ एंड्रॉयड

क्या कोई मेरी मदद कर सकता है?

उत्तर

30

आप अपने EditText

इस तरह के addTextChangedListener करने के लिए है:

yourEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void afterTextChanged(Editable arg0) { 
     enableSubmitIfReady(); 
     } 

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

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

कि विधि में, आप इस तरह करना चाहिए:

public void enableSubmitIfReady() { 

    boolean isReady = yourEditText.getText().toString().length() > 3;  
    yourbutton.setEnabled(isReady); 
    } 

आशा है कि यह मदद करता है।

+1

बदल गया था की लंबाई शामिल onTextChanged में होना चाहिए – rohit

+2

अच्छा जवाब: ' yourbutton.setEnabled (isReady); ' – mharper

+0

यह बटन के संदर्भ के बिना कैसे काम करता है? आपके पास लाइन है yourbutton ... लेकिन आपके कोड में इस कोड में कहीं भी कोई संदर्भ नहीं है, तो यह कैसे काम कर सकता है? –

1

अकेले afterTextChanged का उपयोग कर के साथ समस्या शुरू यह बटन शुरू में अक्षम नहीं कर सकते जब तक आप अपने EditText के लिए लिखना प्रारंभ आवेदन पर है।

इस प्रकार मैंने अपना कार्यान्वित किया और यह बहुत अच्छा काम करता है। अपनी गतिविधि के onCreate विधि

void watcher(final EditText message_body,final Button Send) 
{ 
    final TextView txt = (TextView) findViewById(R.id.txtCounter); 
    message_body.addTextChangedListener(new TextWatcher() 
    { 
     public void afterTextChanged(Editable s) 
     { 
      txt.setText(message_body.length() + "/160"); //This is my textwatcher to update character left in my EditText 
      if(message_body.length() == 0) 
       Send.setEnabled(false); //disable send button if no text entered 
      else 
       Send.setEnabled(true); //otherwise enable 

     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after){ 
     } 
     public void onTextChanged(CharSequence s, int start, int before, int count){ 
     } 
    }); 
    if(message_body.length() == 0) Send.setEnabled(false);//disable at app start 
} 
1

आप क्या @Udaykiran लेकिन इसके बजाय arg0.length() का उपयोग कर सकते हैं कहते हैं अंदर इस पद्धति को कॉल करें। सिवाय मैं अगर-किसी और पैटर्न में सरलीकृत की इस प्रकार की देखना पसंद करते हैं

Editable भी) मुझे लगता है कि enableSubmitIfReady (TextEditor की सामग्री है कि

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