验证EditText中的内容

时间:2011-12-10 00:02:04

标签: android android-widget android-edittext

我有16个EditText,我想验证每一个。例如,如果edittext为null或空白(“”),我想在按下按钮时用0填充它。
这是我的代码:

package com.selmes;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.*;
import android.widget.*;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
 EditText txt1 ;
 EditText txt2;
 EditText txt3 ;
    EditText txt4 ;
    EditText txt5 ;
    EditText txt6;
    EditText txt7;
    EditText txt8;
    EditText txt9;
    TextView tv ;
    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   Button limpiar= (Button) findViewById(R.id.limpiar);
  limpiar.setOnClickListener( new OnClickListener() {
     EditText txt1 = (EditText) findViewById(R.id.txt1);
 EditText txt2 = (EditText) findViewById(R.id.txt2);
 EditText txt3 = (EditText) findViewById(R.id.txt3);
    EditText txt4 = (EditText) findViewById(R.id.txt4);
    EditText txt5 = (EditText) findViewById(R.id.txt5);
    EditText txt6 = (EditText) findViewById(R.id.txt6);
    EditText txt7 = (EditText) findViewById(R.id.txt7);
    EditText txt8 = (EditText) findViewById(R.id.txt8);
    EditText txt9 = (EditText) findViewById(R.id.txt9);
    TextView tv = (TextView) findViewById(R.id.textView1);
            @Override
    public void onClick(View v) {
            txt1.setText("0");
        txt2.setText("0");
        txt3.setText("0");
        txt4.setText("0");
        txt5.setText("0");
        txt6.setText("0");
        txt7.setText("0");
        txt8.setText("0");
        txt9.setText("0");
        tv.setText("");
    }
});
            /** boton de calcular resultado con su procedimientos */
Button calcular = (Button) findViewById(R.id.button1);
calcular.setOnClickListener(new OnClickListener() {
     EditText txt1 = (EditText) findViewById(R.id.txt1);
     EditText txt2 = (EditText) findViewById(R.id.txt2);
     EditText txt3 = (EditText) findViewById(R.id.txt3);
        EditText txt4 = (EditText) findViewById(R.id.txt4);
        EditText txt5 = (EditText) findViewById(R.id.txt5);
        EditText txt6 = (EditText) findViewById(R.id.txt6);
        EditText txt7 = (EditText) findViewById(R.id.txt7);
        EditText txt8 = (EditText) findViewById(R.id.txt8);
        EditText txt9 = (EditText) findViewById(R.id.txt9);
        TextView tv = (TextView) findViewById(R.id.textView1);
                        @Override
    public void onClick(View v) {
        int n1,n2,n3,n4,n5,n6,n7,n8,n9;
    if (txt1.getText().equals("")) txt1.setText(0);
        n1=Integer.parseInt( txt1.getText().toString());
n2=Integer.parseInt( txt2.getText().toString());
n3=Integer.parseInt( txt3.getText().toString());
n4=Integer.parseInt( txt4.getText().toString());
n5=Integer.parseInt( txt5.getText().toString());
n6=Integer.parseInt( txt6.getText().toString());
n7=Integer.parseInt( txt7.getText().toString());
n8=Integer.parseInt( txt8.getText().toString());
n9=Integer.parseInt( txt9.getText().toString());
int res=  (n1 * n5 * n9) + (n4 * n8 * n3) + (n7 * n2 * n6) - (n7 * n5 * n3) - (n8 * n6 * n1) - (n9 * n4 * n2);
tv.setText("La determinante es:" + res);
    }
            });
// pasar al siguiente actividad
    Button a4x4 = (Button) findViewById(R.id.b4x4);
    a4x4.setOnClickListener(new OnClickListener() {
                    @Override
        public void onClick(View v) {
            Intent intento = new Intent(MainActivity.this,ec4x4.class);
        startActivity(intento);
                }
    });
    }
  }

此代码中是否有任何错误?我该如何修理它们?

3 个答案:

答案 0 :(得分:1)

为什么要在Listener中重新声明TextView?它们已在onCreate方法中引用。

学家

答案 1 :(得分:1)

以下是您可以做的事情:

创建和编辑EditText

 List<EditText> txtList = new ArrayList<EditText>;

您的onCreate将如下所示:

`txtList.add((EditText)findViewById(R.id.txt1));
txtList.add((EditText)findViewById(R.id.txt2));
txtList.add((EditText)findViewById(R.id.txt3));
txtList.add((EditText)findViewById(R.id.txt4));
txtList.add((EditText)findViewById(R.id.txt5));
txtList.add((EditText)findViewById(R.id.txt6));
txtList.add((EditText)findViewById(R.id.txt7));
txtList.add((EditText)findViewById(R.id.txt8));
txtList.add((EditText)findViewById(R.id.txt9));`

创建api validateAndSetToZero

void validateAndSetToZero(List<EditText> editTextList) {
  for(EditText et : editTextList)
    if(et.getText().toString().equals(""))
      et.setText("0");
}

您的onClick按钮应如下所示:

calcular.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    validateAndSetToZero(txtList);
    // Below will be your other logic
}

答案 2 :(得分:0)

我认为最好的方法是扩展EditText并覆盖getText()方法。 还有一个关于你的代码的评论,它是如此...凌乱。 首先,在调用任何函数之前定义变量。 然后,在onCreate方法中初始化它们。 正如我所看到的,您应该通过MainActivity类中的实现View.OnClickListener为按钮定义覆盖onClick方法。