我试图让ImageSwitcher每隔5秒更换一次图像..
我尝试使用Timer
:
Timer t = new Timer();
//Set the schedule function and rate
t.scheduleAtFixedRate(new TimerTask() {
public void run() {
//Called each time when 1000 milliseconds (1 second) (the period parameter)
currentIndex++;
// If index reaches maximum reset it
if(currentIndex==messageCount)
currentIndex=0;
imageSwitcher.setImageResource(imageIds[currentIndex]);
}
},0,5000);
但是我收到了这个错误:
logcat的:
12-14 15:07:29.963: E/AndroidRuntime(25592): FATAL EXCEPTION: Timer-0
12-14 15:07:29.963: E/AndroidRuntime(25592): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
答案 0 :(得分:1)
Only the original thread that created a view hierarchy can touch its views.
计时器任务在不同的线程上运行。 Ui应该在ui线程上更新。
使用runOnUiThread
。
runOnUiThread(new Runnable() {
public void run() {
imageSwitcher.setImageResource(imageIds[currentIndex]);
}
});
您也可以使用Handler
代替计时器。
编辑:
答案 1 :(得分:1)
Timer t = new Timer();
//Set the schedule function and rate
t.scheduleAtFixedRate(new TimerTask() {
public void run() {
//Called each time when 1000 milliseconds (1 second) (the period parameter)
currentIndex++;
// If index reaches maximum reset it
if(currentIndex==messageCount)
currentIndex=0;
runOnUiThread(new Runnable() {
public void run() {
imageSwitcher.setImageResource(imageIds[currentIndex]);
}
});
}
},0,5000);