如果我按照以下顺序使用handler.postDelayed
(延迟startAnimation
):
animFadeout = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.disappear);
animFadeout.setAnimationListener(this);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
txtMessage.startAnimation(animFadeout);
}
}, 4000);
然后一切顺利。但是,如果我更改顺序(延迟loadAnimation
):
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
animFadeout = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.disappear);
}
}, 4000);
animFadeout.setAnimationListener(this);
txtMessage.startAnimation(animFadeout);
应用程序崩溃并显示消息“很遗憾,我的应用已停止工作”。 我很好奇这个结果的原因...... 感谢
答案 0 :(得分:0)
问题在于
animFadeout.setAnimationListener(this);
由于您在线程中创建了animFadout(尚未运行),因此animFadeout仍然为null。您应该在LogCat消息中获得NullPointerException。
您是否尝试将所有3个语句放入Runnable?