如何获取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
我该如何解决这个问题?
答案 0 :(得分:1)
这是因为你在编辑文本中输入5。现在,您将循环迭代,直到从初始值0开始小于6。
当计数器达到5时,您的状况将变为真实5&lt; 6然后在这里数组大小是5你正在访问第6个元素。所以它抛出了ArrayIindexOutOfBound Exception
。
摆脱这个问题。
试试这个。
for (i = 0; i<(array.length);i++){
//Code
}
答案 1 :(得分:0)
从for (i = 0;i<(array.length+1);i++){
删除+1,它会像魅力一样工作。
答案 2 :(得分:0)
您只需要通过以下代码替换for条件。
for (i = 0;i<(array.length-1);i++){
它肯定会起作用。
答案 3 :(得分:0)
请参阅,循环执行完毕后,onClick()
正在执行,因此i
的值比数组的最后一个索引多一个。要解决此问题,请将该值保存到另一个临时整数变量中,然后发送它。那肯定会有用。