0

如何获取 EditText 的值,然后将其存储在我的数组中?

这是我的完整代码:

EditText op = (EditText)v.findViewById(R.id.operator);
array=new int [Integer.valueOf(op.getText().toString())];

for (i = 0;i<(array.length+1);i++){
    LayoutInflater inflater = MainActivity.this.getLayoutInflater();
    final View v2=inflater.inflate(R.layout.inputangka, null) ;
    new AlertDialog.Builder(MainActivity.this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("number of-"+(i-1)+":")
        .setView(v2)
        .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dlg, int sumthin) {
                EditText number = (EditText)v2.findViewById(R.id.number);
                int number1 = Integer.valueOf(number.getText().toString());
                array [i]= number1; //error line

我的错误日志:

02-05 16:33:31.374: E/AndroidRuntime(431): java.lang.ArrayIndexOutOfBoundsException

我该如何解决这个问题?

4

4 回答 4

1

发生这种情况是因为对于 ex,您在编辑文本中输入 5。现在您正在迭代循环,直到从初始值 0 开始小于 6。

当计数器达到 5 时,您的条件将变为 true 5 < 6,但数组大小为 5,您正在访问第 6 个元素。所以它抛出了ArrayIindexOutOfBound Exception.

要摆脱这个问题。

尝试这个。

for (i = 0; i<(array.length);i++){
    //Code
}
于 2013-02-05T17:06:07.700 回答
0

看,你onClick()的循环完成后执行,因此值i比数组最后一个索引大一。作为一种解决方法,将该值保存到另一个临时整数变量中,然后发送它。那时它肯定会起作用。

于 2013-02-05T17:48:24.377 回答
0

您只需要通过以下代码替换 for 条件。

for (i = 0;i<(array.length-1);i++){

它肯定会起作用。

于 2013-02-05T17:28:24.090 回答
0

从中删除+1 for (i = 0;i<(array.length+1);i++){,它会像一个魅力一样工作。

于 2013-02-05T17:15:07.377 回答