2011-11-22 10 views
12

EditTextの単語が3単語未満の場合はButtonで無効にしたいのですが、EditTextの単語が3単語以上ある場合は有効にしますClickedを得ることができるようにします。AndroidのEditTextのテキストに従ってButtonを有効または無効にします

誰でも私を助けることができますか?その方法では

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

、あなたは次のように実行する必要があります:あなたはこのようなあなたのEditText

からaddTextChangedListenerに持って

答えて

30

public void enableSubmitIfReady() { 

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

はそれがお役に立てば幸いです。

+1

を変更しましたTextEditorのコンテンツの長さは、私は私がに単純化のif-elseパターンのその種を見ることを好む以外enableSubmitIfReadyは()onTextChanged – rohit

+2

良い答えであるべきだと思うが含まれています ' yourbutton.setEnabled(isReady); ' – mharper

+0

ボタンを参照せずにこれはどのように機能しますか? yourbuttonという行がありますが、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

関連する問題