当三个EditText具有值时,确保单击按钮

时间:2013-07-23 14:15:14

标签: android exception android-edittext

我有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());

                    }

3 个答案:

答案 0 :(得分: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
     }
}

答案 1 :(得分:0)

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

答案 2 :(得分:-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);
}

稍作修正。