运行时上的Handler.postDelayed错误

时间:2013-08-14 19:59:22

标签: android android-animation android-handler

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

应用程序崩溃并显示消息“很遗憾,我的应用已停止工作”。 我很好奇这个结果的原因...... 感谢

1 个答案:

答案 0 :(得分:0)

问题在于

animFadeout.setAnimationListener(this);

由于您在线程中创建了animFadout(尚未运行),因此animFadeout仍然为null。您应该在LogCat消息中获得NullPointerException。

您是否尝试将所有3个语句放入Runnable?