嗨,这是我的头脑,我正在尝试在for循环中加载一个TextViews和ImageButtons数组,我已经搜索了答案,并在我的搜索结束后看起来像这样的代码:
public void initializeVideos() {
// TODO Auto-generated method stub
Titles = new TextView[5];
Images = new ImageButton[5];
int tvId;
int ibId;
for(int i = 1; i < 6; i++){
tvId = getResources().getIdentifier("tv" + i, "id", getPackageName());
ibId = getResources().getIdentifier("ib" + i, "id", getPackageName());
Titles[i] = (TextView) findViewById(tvId);
Images[i] = (ImageButton) findViewById(ibId);
}
}
问题是我遇到了NumberFormatException,我似乎无法理解为什么......
帮助将不胜感激
答案 0 :(得分:0)
是的,因为你的for循环错了,你必须从i = 0到i <5开始循环。 这里的问题是你的最后一个id是否为null表示所以没有id可用,所以它给你numberformat异常。
答案 1 :(得分:0)
循环中的值是错误的,因为你得到了崩溃,你正在for循环初始化 i = 1 的值,所以第一个值将放在第一个位置数组的数组和第0位保持为空,然后当达到5时迭代将继续。我将使数组超出绑定异常。这是因为数组大小为5,位置将像这样[0 ,1,2,3,4]这是代码中大小为5的数组的位置顺序将会发生的事情。对于最后一次迭代,它将把值放在[5]中,这在数组中是不可用的。那么导致问题;
工作代码将是这样的
public void initializeVideos() {
// TODO Auto-generated method stub
TextView[] Titles = new TextView[5];
ImageButton[] Images = new ImageButton[5];
int tvId;
int ibId;
for (int i = 0; i < 5; i++) //Just changed the values in for loop
{
System.out.println(i);
tvId = getResources().getIdentifier("tv" + i, "id",
getPackageName());
ibId = getResources().getIdentifier("ib" + i, "id",
getPackageName());
Titles[i] = (TextView) findViewById(tvId);
Images[i] = (ImageButton) findViewById(ibId);
}
}