填写了多个edittexts后启用按钮

时间:2014-08-14 14:31:34

标签: c# android android-edittext xamarin android-button

我想创建一个只包含很少编辑文本字段的活动和一个应该被禁用的按钮,直到填写了最重要的这些字段。这是我正在使用的代码,但按钮一直处于禁用状态:

 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;
    }

提前致谢! :)

4 个答案:

答案 0 :(得分:1)

为什么不使用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
}

更清洁的恕我直言。

答案 1 :(得分:0)

您需要在TextWatcher#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之上的类似听众应该完成任务。

答案 2 :(得分:0)

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

例如,您可以创建一个TextWatcher对象并将其附加到相关的文本字段。类似的东西:

inputType.addTextChangedListener(watcher);

在这个观察者中,你会做你所写的检查并做:

doneButton.setEnabled(true/false);

答案 3 :(得分:0)

我解决了这个问题:

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;
    }