2012-12-06 19 views
0

编写我的第一个android应用程序。几乎所有的工作除了这个功能。即使所有的文本框都有一些数字值,应用程序也会在这个函数中崩溃。另外,是否有更好的方法来检索这些文本框中的所有值并将其转换为int。请注意,所有文本框都是activity.xml文件中的输入类型编号。[Android] parseInt()期间出错

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; 
} 
+3

试图用string.trim()调用它?和哪些错误? logcat输出?什么? – hndr

+0

你有创建数组吗?数组的大小/长度是多少?'vsel'和'clk'? H – adatapost

+0

如果你在edittext中没有任何值,那么Integer.parseInt不会发生并且得到错误。所以,请确保你的EditText值不能为空 –

回答

1

parseInt函数()如果发生这种parseInt函数为您处理it.Since您的应用程序仍然会崩溃,见VSE1和CLK1阵列是否创建了这些正确的,否则将被捕获任何异常没有崩溃您app.Because不。

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

0

我也有同样的问题,你可以通过使用修剪功能来解决它​​。

clk[1]= Integer.parseInt(c1.getText().toString().trim());