【问题标题】:Enabling a button after number of edittexts has been filled在填充了一些编辑文本后启用按钮
【发布时间】:2014-08-14 14:31:34
【问题描述】:

我想创建一个只有几个编辑文本字段和一个按钮的活动,在这些字段中最重要的字段被填充之前,该按钮应该被禁用。这是我正在使用的代码,但按钮一直处于禁用状态:

 doneButton implementation
        if((isEmpty(inputType)) || (isEmpty(inputAmount)) || (isEmpty(inputSupplier)))
            doneButton.Enabled = false;
        else
            doneButton.Enabled = true;

这是 isEmpty() 方法的代码,它检查编辑文本是否为空:

private Boolean isEmpty(EditText etText) {
        return etText.Text.ToString().Length == 0;
    }

提前致谢! :)

【问题讨论】:

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


    【解决方案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
    }
    

    更清洁恕我直言。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我也在考虑使用 TextWatcher 但我不知道如何在 Xamarin 中实现它..
      【解决方案3】:

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

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

      inputType.addTextChangedListener(watcher);
      

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

      doneButton.setEnabled(true/false);
      

      【讨论】:

        【解决方案4】:

        我是这样解决的:

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

        【讨论】:

          猜你喜欢
          • 2021-02-12
          • 1970-01-01
          • 2017-08-23
          • 1970-01-01
          • 2022-08-23
          • 1970-01-01
          • 2018-08-03
          • 2020-07-20
          • 2020-07-22
          相关资源
          最近更新 更多