我有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);
}
});
}
}
此代码中是否有任何错误?我该如何修理它们?
答案 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方法。