0

编写我的第一个 Android 应用程序。除此功能外,几乎所有功能都有效。即使所有文本框都有一些数值,应用程序也会在此函数中崩溃。此外,是否有更好的方法来检索这些文本框中的所有值并将其转换为 int。请注意,所有文本框都是 activity.xml 文件中的输入类型编号。

public int updateclks()
{
  try{
    EditText v1= (EditText) findViewById(R.id.editText1);
    EditText v2 = (EditText) findViewById(R.id.EditText01);
    EditText v3 = (EditText) findViewById(R.id.EditText02);
    EditText v4 = (EditText) findViewById(R.id.EditText03);

    EditText c1= (EditText) findViewById(R.id.EditText04);
    EditText c2 = (EditText) findViewById(R.id.EditText05);
    EditText c3 = (EditText) findViewById(R.id.EditText06);
    EditText c4 = (EditText) findViewById(R.id.EditText07);
    try{ //error occurs somewhere around this block
    vsel[1]= Integer.parseInt(v1.getText().toString());
    vsel[2]= Integer.parseInt(v2.getText().toString());
    vsel[3]= Integer.parseInt(v3.getText().toString());
    vsel[4]= Integer.parseInt(v4.getText().toString());

    clk[1]= Integer.parseInt(c1.getText().toString());
    clk[2]= Integer.parseInt(c2.getText().toString());
    clk[3]= Integer.parseInt(c3.getText().toString());
    clk[4]= Integer.parseInt(c4.getText().toString());
  }
  catch(NumberFormatException e)
  {
    Context context = getApplicationContext();
    int duration = Toast.LENGTH_SHORT;
    Toast toast = Toast.makeText(context, "Fields cannot be empty", duration);
    toast.show();
    return 1;
  }
  return 0;
}
4

2 回答 2

1

parseInt() 不会使您的应用程序崩溃。因为如果此 parseInt 发生任何异常,它将在您处理它时被捕获。由于您的应用程序仍在崩溃,请参阅 vse1 和 clk1 数组,无论您是否正确创建了这些。

如果您创建了长度为 4 的 vse1 数组,还要注意数组长度。那么您可能希望从索引 0 而不是 1 开始。否则 ArrayIndexOutOfBounds 将使您的应用程序崩溃。

于 2012-12-06T05:19:39.857 回答
0

我也遇到了同样的问题,你可以使用修剪功能解决它。

clk[1]= Integer.parseInt(c1.getText().toString().trim());
于 2012-12-06T05:34:35.183 回答