Проверьте содержимое в EditText - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть 16 EditText с, и я хочу проверить каждого из них.Например, если edittext является нулевым или пустым (""), я хочу заполнить его 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 ]

1 голос
/ 10 декабря 2011

Вот что вы можете сделать:

Создать и массив 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));`

Создать APIvalidateAndSetToZero

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

Ваше нажатие кнопки должно выглядеть следующим образом:

calcular.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    validateAndSetToZero(txtList);
    // Below will be your other logic
}
1 голос
/ 10 декабря 2011

Почему вы повторно объявили свои TextViews в Слушателе?На них уже ссылаются в вашем методе onCreate.

J.

0 голосов
/ 30 мая 2014

Я думаю, что лучше всего вам расширить свой EditText и переопределить метод getText ().Еще один комментарий о вашем коде, это так ... грязно.во-первых, определите вашу переменную перед вызовом в любой функции.Затем инициализируйте их в методе onCreate.Как я увидел, вы должны определить метод onClick override для кнопок, реализовав View.OnClickListener в вашем классе MainActivity.

...