如果编辑文本发生变化,如何在android中禁用按钮?

时间:2014-02-21 12:06:20

标签: android android-edittext

我有一个Android应用程序,有3个按钮。第一个按钮始终处于启用状态,但其他按钮已禁用。因此,如果第一个按钮git正确响应,则将启用其他2个按钮,否则它将保持禁用状态。这很好用。

现在,如果第一个按钮git得到正确的响应,但是用户再次更改了编辑文本,我需要一种方法让其他2个按钮再次被禁用。

这就是我所做的:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     btn1 = (Button)findViewById(R.id.Askbutton);
     btn2 = (Button)findViewById(R.id.Addbutton);
    btn1.setEnabled(false);
    btn2.setEnabled(false);}

public void SearchClickHandler(View view){

DatabaseHandler db = new DatabaseHandler(this );

       if (view.getId() == R.id.Searchbutton) {
         EditText BookN = (EditText)findViewById(R.id.Bookname);
         String Book_n = BookN.getText().toString() ;
        TextView resultT =(TextView)findViewById(R.id.resultLable);
            Books book = db.findbook(Book_n);

                      if(book != null ) {
                btn1.setEnabled(true);
                btn2.setEnabled(true);

                resultT.setText(Book_n + " is avaliable ");

            if(BookN.isInEditMode()) {
        btn1.setEnabled(false);
        btn2.setEnabled(false);
                }

             } else {
                 resultT.setText("We are sorry,  "+ Book_n + "  is not avaliable");
                }
       }
      }

4 个答案:

答案 0 :(得分:2)

您必须使用addTextChangedListener()方法。

BookN = (EditText)findViewById(R.id.Bookname);
BookN.addTextChangedListener(new TextWatcher(){
    public void afterTextChanged(Editable s) {
        //use s.length() for enable and disable Button
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
}); 

答案 1 :(得分:0)

试试这个,它可能会有所帮助

BookN.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
            return false;
            btn1.setEnabled(false);
            btn2.setEnabled(false);
        }
    });

答案 2 :(得分:0)

TextWatcher实施EditText 这是link

答案 3 :(得分:0)

试试这个

 BookN .addTextChangedListener(new TextWatcher(){
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {   
   }   
   @Override
 public void beforeTextChanged(CharSequence s, int start, int count,
int after) {    
 }
   @Override
     public void afterTextChanged(Editable s) {
     String st=BookN.getText().toString();
       btn1.setEnabled(false);
        btn2.setEnabled(false);
    }
    }
  });