AnimationUtils.loadAnimation()中的异常(有时)

时间:2014-12-16 08:10:33

标签: android android-animation android-handler

我在下面的代码中给出的行中得到一个空指针异常。问题是,异常是随机发生的。很多时候它只是起作用,但有时会引发异常(比如5%)。任何帮助将不胜感激。

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        Animation animation = AnimationUtils.loadAnimation(getActivity().getApplicationContext(), R.anim.dialog_main_show_amination);  //Exception in this line
        fabAddDeliveryBoy.startAnimation(animation);
        fabAddDeliveryBoy.setVisibility(View.VISIBLE);
     }
}, 500);

1 个答案:

答案 0 :(得分:3)

问题是您的处理程序与您的片段生命周期无关。即使片段与其活动分离后,处理程序消息也会触发,getActivity()将返回null。

作为快速解决方法,您可以将Runnable放入变量并清除处理程序,例如onDestroyView()

handler.removeCallbacks(runnable);

要获得更优雅的解决方案,请考虑将延迟作为动画本身的一部分。