I want to disable by Button if the words in the EditText is less than 3 words, and if the words in the EditText are more than 3 words then I want to enable it so that it can
The problem with using afterTextChanged alone is at application start it can't disable the button initially until you start typing to your EditText.
This is how I implemented mine and it works great. Call this method inside your Activity's onCreate method
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
}
You can do what @Udaykiran says but use arg0.length()
instead.
The Editable
also contains the length of the content of the TextEditor
that was changed
You have to addTextChangedListener
to your EditText
Like this:
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) {
}
});
In that method, you should do like this:
public void enableSubmitIfReady() {
boolean isReady = yourEditText.getText().toString().length() > 3;
yourbutton.setEnabled(isReady);
}
Hope it helps.