在填充编辑文本数后启用按钮

本文关键字:启用 按钮 文本 填充 编辑 | 更新日期: 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);
    }
});

inputAmountinputSupplier上类似的监听器应该完成任务。

问题是:您将此代码附加在哪个事件上?

例如,您可以创建一个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;
    }