运行时出现Handler.postDelayed错误



如果按照以下顺序使用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);

应用程序崩溃,并显示消息"不幸的是,我的应用程序已停止工作"。我很好奇这个结果的原因。。。感谢

有问题

animFadeout.setAnimationListener(this);

由于您正在线程中创建animFadout(尚未运行),animFadeout仍然为null。您应该在LogCat消息中得到一个NullPointerException。

你试过把这3个语句都放在Runnable中吗?

最新更新