这里我在Array-list命名测试中选择值的代码我需要在Array-List中获取基于按钮按下事件的值但它显示下面给出的错误
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d4 = ex.getText().toString();
int i=test.size();
for(int j=0;j<=i;j++) {
String s= test.get(j).toString();
Toast.makeText(getApplicationContext(),s + " ", Toast.LENGTH_SHORT).show();
}
}
});
错误消息在下面给出
04-04 16:38:29.551 28723-28723/com.example.web03.bulkmessenger E/MotionRecognitionManager: mSContextService = null
04-04 16:38:29.551 28723-28723/com.example.web03.bulkmessenger E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@3e5f9413
04-04 16:38:32.051 28723-28723/com.example.web03.bulkmessenger E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.web03.bulkmessenger, PID: 28723
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.example.web03.bulkmessenger.MessengerActivity$3.onClick(MessengerActivity.java:127)
at android.view.View.performClick(View.java:5246)
at android.widget.TextView.performClick(TextView.java:10573)
at android.view.View$PerformClick.run(View.java:21256)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6912)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
提前感谢您的帮助
答案 0 :(得分:0)
IndexOutOfBoundsException,因为您调用了数组大小+1 ..然后在for循环中删除j&lt; = i。
int i=test.size(); // array size (i.e 10)
for(int j=0;j<i;j++) { //j<=i is wrong because it execute 11th time.so remove =
String s= test.get(j).toString(); //test.get(11)
Toast.makeText(getApplicationContext(),s + " ", Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:0)
您收到IndexOutOfBoundsException错误,因为您已将for循环中的变量j设置为“j&lt; = i”尝试将其设置为此
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d4 = ex.getText().toString();
int i=test.size();
for(int j=0;j<i;j++) {
String s= test.get(j).toString();
Toast.makeText(getApplicationContext(),s + " ", Toast.LENGTH_SHORT).show();
}
}
});
答案 2 :(得分:0)
只需将 for循环更改为
即可 for(int j=0;j<test.size();j++)
因为索引从 0 开始,但size()
方法返回列表的长度。
因此,如果你运行循环直到j <= test.size()
,你将超过列表的索引
答案 3 :(得分:0)
java.lang.IndexOutOfBoundsException:索引2无效,大小为2
IndexOutOfBoundsException 当程序尝试使用超出有效索引范围的值访问可索引集合中的值时抛出。
问题
for(int j=0;j<=i;j++) { // == Usually any negative integer less than or equal to -1 and positive integer greater than or equal to the size of the object is an index which would be out of bounds.
<强>解决方案强>
for(int j=0;j<i;j++) {
答案 4 :(得分:0)
在for循环的最后一次迭代期间,数组超出范围,因为i
的值为test.size();
如果您只是想迭代地使用该值显示toast,只需使用for-each loop。