如果编辑文本发生更改,如何在android中禁用按钮作为响应?
我有一个android应用程序,有3个按钮。第一个按钮始终处于启用状态,但其他按钮处于禁用状态。因此,如果第一个按钮响应正确,那么其他两个按钮将被启用,否则它将保持禁用状态。这很有效 现在,如果第一个按钮的响应正确,但用户再次更改了编辑文本,我需要一种方法使其他两个按钮再次被禁用 这就是我所做的:如果编辑文本发生更改,如何在android中禁用按钮作为响应?,android,android-edittext,Android,Android Edittext,我有一个android应用程序,有3个按钮。第一个按钮始终处于启用状态,但其他按钮处于禁用状态。因此,如果第一个按钮响应正确,那么其他两个按钮将被启用,否则它将保持禁用状态。这很有效 现在,如果第一个按钮的响应正确,但用户再次更改了编辑文本,我需要一种方法使其他两个按钮再次被禁用 这就是我所做的: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se
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");
}
}
}
必须使用
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){}
});
试试这个,它可能对你有帮助
BookN.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
return false;
btn1.setEnabled(false);
btn2.setEnabled(false);
}
});
为
EditText
这是答案。试试这个
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);
}
}
});
将listner添加到edittext将起作用,根据您对edittext所做的检查类型,您可以选择listner我想检查用户在git后是否有正确的响应以及是否启用了其他2个按钮,以检查他是否为新搜索更改了edittext,其他按钮将在首次启动时禁用。我会试着让听众看看它是否有效。谢谢:)