在填充编辑文本数后启用按钮
本文关键字:启用 按钮 文本 填充 编辑 | 更新日期: 2023-09-27 18:17:56
我想做一个活动与几个edittext字段和一个按钮,应该被禁用,直到最重要的这些字段已被填充。这是我使用的代码,但按钮一直处于禁用状态:
doneButton implementation
if((isEmpty(inputType)) || (isEmpty(inputAmount)) || (isEmpty(inputSupplier)))
doneButton.Enabled = false;
else
doneButton.Enabled = true;
这是isEmpty()方法的代码,它检查edittext是否为空:
private Boolean isEmpty(EditText etText) {
return etText.Text.ToString().Length == 0;
}
提前感谢!:)
为什么不使用TextChanged事件:
EditText input = FindViewById<EditText>(Resource.Id.editText1);
input.TextChanged += input_TextChanged;
,然后为它定义事件处理程序?
private void input_TextChanged(object sender, TextChangedEventArgs e)
{
Console.WriteLine("input text changed");
// if text bigger than 0, enable the button, otherwise disable it
}
您需要在texttwatcher #afterTextChanged方法中添加这个实现(您的代码检查按钮是否保持禁用状态),您将作为TextChanged侦听器添加该方法。对于所有你认为重要的编辑文本,你都需要这样做。
像这样:
inputType.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
if((isEmpty(inputType)) || (isEmpty(inputAmount)) || (isEmpty(inputSupplier)))
doneButton.setEnabled(false);
else
doneButton.setEnabled(true);
}
});
inputAmount
和inputSupplier
上类似的监听器应该完成任务。
问题是:您将此代码附加在哪个事件上?
例如,您可以创建一个texttwatcher对象并将其附加到相关的文本字段。比如:inputType.addTextChangedListener(watcher);
在这个监视程序中,您将执行您所写的检查,并执行:
doneButton.setEnabled(true/false);
我是这样解决的:
inputType.AfterTextChanged += new EventHandler<AfterTextChangedEventArgs> (OnTextChange);
inputAmount.AfterTextChanged += new EventHandler<AfterTextChangedEventArgs> (OnTextChange);
inputSupplier.AfterTextChanged += new EventHandler<AfterTextChangedEventArgs> (OnTextChange);
其中OnTextChange()方法是:
public void OnTextChange(object sender, EventArgs e)
{
if((isEmpty(inputType)) || (isEmpty(inputAmount)) || (isEmpty(inputSupplier)))
doneButton.Enabled = false;
else
doneButton.Enabled = true;
}