线程正常工作时抛出 ArrayIndexOutOfBoundsException
ArrayIndexOutOfBoundsException throws while Thread is working normally
我正在使用 Thread 在 Thread.sleep
的时间后将颜色逐一设置为 ImageView
的列表。它正常工作,但在 Thread
的几次循环后,我的应用程序停止工作并抛出 ArrayIndexOutOfBoundsException
.
private Runnable runnable = new Runnable() {
int position = 0;
@Override
public void run() {
while (true) {
if (position >= MAX_ITEM) {
position = 0;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < itemIndicators.size(); i++) {
itemIndicators.get(i).setSelected(false);
}
if (position >= 0){
itemIndicators.get(position-1).setSelected(true);
}
}
});
position++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
我的列表大小与 MAX_ITEM 相同。
请帮我解决这个问题。非常感谢!
如果位置为 0,则您正在访问索引为 -1 的项目
if (position >= 0) {
itemIndicators.get(position-1).setSelected(true);
}
删除-1。
你的错误是由这一行引起的
if (position >= 0){
itemIndicators.get(position-1).setSelected(true);
}
您应该将您的条件编辑为 position > 0
以避免获得 get(-1)
我正在使用 Thread 在 Thread.sleep
的时间后将颜色逐一设置为 ImageView
的列表。它正常工作,但在 Thread
的几次循环后,我的应用程序停止工作并抛出 ArrayIndexOutOfBoundsException
.
private Runnable runnable = new Runnable() {
int position = 0;
@Override
public void run() {
while (true) {
if (position >= MAX_ITEM) {
position = 0;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < itemIndicators.size(); i++) {
itemIndicators.get(i).setSelected(false);
}
if (position >= 0){
itemIndicators.get(position-1).setSelected(true);
}
}
});
position++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
我的列表大小与 MAX_ITEM 相同。 请帮我解决这个问题。非常感谢!
如果位置为 0,则您正在访问索引为 -1 的项目
if (position >= 0) {
itemIndicators.get(position-1).setSelected(true);
}
删除-1。
你的错误是由这一行引起的
if (position >= 0){
itemIndicators.get(position-1).setSelected(true);
}
您应该将您的条件编辑为 position > 0
以避免获得 get(-1)