我是编程新手,所以我不知道大多数错误,它们是什么意思?如果有人能告诉我如何解决这个错误,那真的会有所帮助。
我尝试使用这组代码会让图片淡入并显示几秒钟,并在几秒后淡出。
代码位于onCreate()
final ImageView wavem = (ImageView)findViewById(R.id.wavem);
final Animation animationFadeIn = AnimationUtils.loadAnimation(this, R.drawable.fadein);
final Animation animationFadeOut = AnimationUtils.loadAnimation(this, R.drawable.fadeout);
final int time = 8000;
final int readtime = 4000;
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
wavem.startAnimation(animationFadeIn);
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
wavem.startAnimation(animationFadeOut);
}}, readtime);
}
}, time
);
我得到的错误日志是:
08-05 04:18:36.428: E/AndroidRuntime(972): FATAL EXCEPTION: Timer-0
08-05 04:18:36.428: E/AndroidRuntime(972): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
08-05 04:18:36.428: E/AndroidRuntime(972): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
08-05 04:18:36.428: E/AndroidRuntime(972): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:867)
08-05 04:18:36.428: E/AndroidRuntime(972): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4066)
08-05 04:18:36.428: E/AndroidRuntime(972): at android.view.View.invalidate(View.java:10250)
08-05 04:18:36.428: E/AndroidRuntime(972): at android.view.View.startAnimation(View.java:15449)
08-05 04:18:36.428: E/AndroidRuntime(972): at java.util.Timer$TimerImpl.run(Timer.java:284)
我真的很感激任何帮助。
答案 0 :(得分:1)
错误即将发生,因为您使用UI线程创建了视图“wavem”,并且您正在使用TimerTask创建的线程中更改它。
所以在timetask里面而不只是做
wavem.startAnimation(animationFadeIn);
在两个地方都这样做
runOnUiThread(new Runnable(){
public void run() {
wavem.startAnimation(animationFadeIn);
}
});