【问题标题】:Make sure button is clicked when three EditText have a value确保三个 EditText 具有值时单击按钮
【发布时间】:2013-07-23 14:15:14
【问题描述】:

我有 3 个 EditText,需要从用户那里输入一个值。在用户能够单击按钮之前,我想确保所有 3 个 EditText 框都有一个值。如果不是,则用户必须无法单击该按钮。我尝试使用“setEnabled”或“setVisibility”,但它们会抛出错误。

EditText numA, numB, numC;

public static class QuadEquation extends Activity{
    Button calculate;
    EditText numA, numB, numC;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator);
        calculate = (Button) findViewById(R.id.calculate);

        numA = (EditText) findViewById(R.id.numA);
        numB = (EditText) findViewById(R.id.numB);
        numC = (EditText) findViewById(R.id.numC);

        try{

            calculate.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                    Double a = (double) 0, b = (double) 0, c = (double) 0;

                    //Need to convert the string into double.
                    if (!(numA.getText().toString().equals("") && numB.getText().toString().equals("") && numC.getText().toString().equals(""))){
                        a = Double.parseDouble(numA.getText().toString());
                        b = Double.parseDouble(numB.getText().toString());
                        c = Double.parseDouble(numC.getText().toString());

                    }

【问题讨论】:

  • 发布你到目前为止所做的代码

标签: android exception android-edittext


【解决方案1】:

如果您想这样做并希望我们帮助解决错误,您应该发布您收到的错误。

无论如何,另一种方法是检查您的 onClick() 是否都有值

public void onClick(View v)
{
     if (et1.getText().toString.equals("") || et2.getText().toString.equals("") 
           || et3.getText().toString.equals(""))
     {
          // could print Toast to tell user to enter values or do something else
     }
     else
     {
          // do your work
     }
}

【讨论】:

  • 太棒了!非常感谢!
  • @ivesingh 如果这对您有用,请点击复选标记接受,这样可以帮助其他人更轻松地找到它
  • -1 因为;使用 onClick 如何满足在用户能够单击按钮之前检查所有 3 个编辑字段是否包含值的 OP 要求?
  • @paulkayuk 感谢您解释否决票。但是,虽然它不会阻止用户单击Button,但它确实提供了另一种实现所需结果的方法。如果任何框为空,OP 不希望某些代码运行。有时有人会问一个不一定正是他们需要的问题。根据OP的评论,我会说这个答案满足了需求。这很像当您填写表格并单击按钮时,您会收到一条消息说必填字段为空。就个人而言,我认为它不应该得到 -1,因为它不是一个错误的答案
【解决方案2】:

在你的类上实现一个 TextWatcher 并在你的每个 EditTexts 上添加一个 Text Changed Listener,例如ed1.addTextChangeListener(this)。然后在自动生成的方法 afterTextChanged 中检查每个 EditTexts 中文本的长度。如果所有长度都大于 0,请执行 calculate.setEnabled(true),首先在 onCreate 上使用 calculate.setEnabled(false) 对其进行初始化

【讨论】:

    【解决方案3】:

    试试这个:

    EditText ed1 =  findViewById(R.id.edit1);
    EditText ed2 =  findViewById(R.id.edit2);
    EditText ed3 =  findViewById(R.id.edit3);
    Button btn = (Button) findViewById(R.id.button);
    
    
    String editString = ed1.getText().toString();
    if(editString!= null){
      editString = ed2.getText().toString();
    }
    if(editString!= null){
      editString = ed3.getText().toString();
    }
    
    if(editString!= null){
      btn.setEnabled(true);
    }
    

    稍作修正。

    【讨论】:

    • @downvoters - 这个实现有什么问题,我得到了三遍 donvotet?您至少可以发表评论吗,我可能在某个地方错了,但是无缘无故地投票似乎是个人的-嗯?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    相关资源
    最近更新 更多