我希望我的btnsave
仅在editText
中有东西时才能工作。
首先,启动应用程序时,editText
中没有任何内容时,我的代码有效(btnsave
不起作用)。但是,当我在editText
中键入内容时,我希望btnsave
能够正常工作。但不是!没用我认为如果语句只能运行一次。
出什么问题了? 我希望这段代码在应用程序运行时永久运行。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSave = (Button) findViewById(R.id.btnSave);
editText = (EditText) findViewById(R.id.editText);
if (!editText.getText().toString().matches(""))
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"H", Toast.LENGTH_SHORT).show();
}
});
}
换句话说
btnAdd = (Button) findViewById(R.id.btnAdd);
editText = (EditText) findViewById(R.id.editText);
if (editText.getText().toString().matches(""))
btnAdd.setEnabled(false);
else
btnAdd.setEnabled(true);
应用启动时,btn被禁用(因为editText
为空),但是当我在editText
中键入文本时,预计btn将被启用,但不会启用!
我认为当我在editText
中输入sth时,它不会重新检查条件。为什么?
答案 0 :(得分:0)
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.toString().trim().length() > 0) {
btnAdd.setEnabled(false);
} else {
btnAdd.setEnabled(true);
}
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
答案 1 :(得分:0)
您应遵循以下逻辑:
以下代码段应满足您的需求:
btn.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View view){
if(!editText.getText().toString().matches("")){
Toast.makeText(MainActivity.this, "H", Toast.LENGTH_SHORT).show();
}
});
如果要使按钮在EditText中有文本时可用,而在没有文本时不可用,则可以使用以下属性:
btn.setClickable(true);
只需在条件语句中使用这一行。