这个问题不太可能帮助任何未来的游客;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况有关,而这些情况通常不适用于互联网的全球受众。有关使此问题更广泛适用的帮助,请访问帮助中心。
7年前关门了。
当我第一次从微调器中选择时,每件事都是好的,当我第二次选择时,一切都是好的,但在那之后,当我从微调器中选择时,它显示了错误
e/androidruntime(10594):java.lang.arrayindexoutofboundsexception:长度=20;指数=20
public static ArrayList<String> s=new ArrayList<String>();
for(........
s.add(e.child(2).text());
}
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
try{
editPrice.setText(""+Splash.s.get(pos));
}catch (Exception e) {
Toast.makeText(parent.getContext(),"The country is "+pos, Toast.LENGTH_LONG).show();
}
}
4条答案
按热度按时间jdgnovmf1#
doinxwow2#
错误是您试图访问仅包含20个元素的数组的第21个元素(索引20)。
您必须更正代码,以免发生这种情况。
7cjasjjr3#
看看http://developer.android.com/guide/topics/ui/controls/spinner.html#selectlistener
你应该使用
parent.getItemAtPosition(pos)
检索数据。fruv7luv4#
java索引从0开始。因此,如果数组有20个元素,那么它的索引是从0到19。
以字符串数组为例:
因此,如果您想获取例如“c”的索引,您将获取编号为2的索引:
另外,在编写对数组进行迭代的for循环时,它将如下所示:
所以第一个索引是0,用来获取数组的第一个元素。在for循环的中间部分(
i<array.size(0)
)当for循环结束时,你会看到它在最后一个索引之前结束,这是一个条件,原因如上所述。