0

I want to Android:Disable Button on app launch enable only when Edit text is filled. help needed. thanks in advance. I am Android Beginner. Tried using TextWatcher. app is running fine when i don't add this feature. please suggest how i can implement the TextWatcher part. rest of the app is working fine.

here is the code:

package com.example.intentopennextscreen;

import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

  public TextView editText1;
  public Button submit;

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



      //editText1.addTextChangedListener(ebert);
    }


    

  /*TextWatcher ebert = new TextWatcher(){
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
      String message = editText1.getText().toString().trim();

      submit.setEnabled(!message.isEmpty());
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
  };  */




    /* Called when the user taps the Send button */
    public void sendMessage(View view) {

      /* Creating instance of Intent object */
      Intent intent = new Intent(this, DisplayMessageActivity.class);

      /* finding the user-input provided in the editText as an object  */
      EditText editText1 = (EditText) findViewById(R.id.editText1);

      /*Finding Button Element*/
      Button submit = (Button) findViewById(R.id.button);













      /* converting the user-input of editText as String  */
      String message = editText1.getText().toString().trim();







        /* sending the message to other activity as Key-Value Pair */
        intent.putExtra("Value", message);

        /* starting the intent */
        startActivity(intent);
    }
}

2 Answers2

0

You can move the button manipulation inside afterTextChanged

@Override
public void afterTextChanged(Editable s) {
    submit.setEnabled(!s.isEmpty());
}
noahutz
  • 1,207
  • 1
  • 9
  • 11
0

Try this below code,
Add this in your onCreate() method

    submit.setEnabled(false);
    editText1.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (editText1.getText().length() > 0) {
                submit.setEnabled(true);
            } else {
                submit.setEnabled(false);
            }
        }
    });