Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编辑文本框中没有文本时,如何使按钮不可点击?_Java_Android - Fatal编程技术网

Java 编辑文本框中没有文本时,如何使按钮不可点击?

Java 编辑文本框中没有文本时,如何使按钮不可点击?,java,android,Java,Android,我知道如何使它不可点击“button.setEnabled(false);”但不知道如何调用该函数。我尝试了if(editText.setText())。感谢您的帮助。editText.setText()是一个void方法,您希望得到一个返回内容的方法(gettext) 您可以使用方法将TextWatcher添加到您的EditText中,并实现所有必要的逻辑以在或方法处启用\禁用按钮 只有一行解决方案。我认为正确的方法是在edittext中添加一个点击式侦听器,然后从那里监视onTextChan

我知道如何使它不可点击“button.setEnabled(false);”但不知道如何调用该函数。我尝试了if(editText.setText())。感谢您的帮助。

editText.setText()是一个void方法,您希望得到一个返回内容的方法(gettext)

您可以使用方法将
TextWatcher
添加到您的
EditText
中,并实现所有必要的逻辑以在或方法处启用\禁用按钮


只有一行解决方案。

我认为正确的方法是在
edittext
中添加一个点击式侦听器,然后从那里监视
onTextChanged
,如果字符串长度为0,则禁用按钮。应该是这样的:

    myButton = (Button) findViewById(R.id.button);
    myButton.setEnabled(false);
    EditText textMessage = (EditText)findViewById(R.id.editText);
    textMessage.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {}

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

        @Override
        public void onTextChanged(CharSequence s, int start,int before, int count) {
            if(s.length() == 0)
                myButton.setEnabled(false);
            else
                myButton.setEnabled(true);
        }
    });
getText()不返回返回的字符串它返回的是可编辑的,添加一个toString()
  yourButton.setEnabled(!yourTextView.getText().toString.isEmpty());
    myButton = (Button) findViewById(R.id.button);
    myButton.setEnabled(false);
    EditText textMessage = (EditText)findViewById(R.id.editText);
    textMessage.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {}

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

        @Override
        public void onTextChanged(CharSequence s, int start,int before, int count) {
            if(s.length() == 0)
                myButton.setEnabled(false);
            else
                myButton.setEnabled(true);
        }
    });
you can achive this in two way 

before using any aproach you write the code to disable the button in the 

oncreate() you set the button clickable false by default.
 //1.by using focus change listener
 //2.by using  TextchangeListener or TextWatcher the threshold to check the condition after the specific length of text

public class MainActivity extends Activity {
     private EditText editText;Button button;
    @Override
        public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText= (EditText) findViewById(R.id.editText1);


button= (Button) findViewById(R.id.button1);
            button.setEnabled(false);


    //1.by using focus change listener
     editText.setOnFocusChangeListener(new OnFocusChangeListener(){
    @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(editText.getText().toString().trim().length()>0)
            {    button.setEnabled(true); }
            else{  button.setEnabled(false);}
        }});

    //or
    //2.by using  TextchangeListener or TextWatcher
     editText.addTextChangedListener(new new TextWatcher(){
     @Override
    public void afterTextChanged(Editable s) {

           if(editText.getText().toString().trim().length()>0)
            {   
              button.setEnabled(true);
             } else{  button.setEnabled(false);}



 /*this function will call on every text entry so use
  some threshold so it  will be call once and validate 
    that threshold in if() as condition to make button clickable. */   
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) { } });

    }
}

my suggestion is if you want to keep track of the letter than go for the addTextChangedListener 
else use the focusChangeListener code only