我有一个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");
}
}
}
答案 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);
}
}
});