我在下面的代码中给出的行中得到一个空指针异常。问题是,异常是随机发生的。很多时候它只是起作用,但有时会引发异常(比如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);
答案 0 :(得分:3)
问题是您的处理程序与您的片段生命周期无关。即使片段与其活动分离后,处理程序消息也会触发,getActivity()
将返回null。
作为快速解决方法,您可以将Runnable
放入变量并清除处理程序,例如onDestroyView()
:
handler.removeCallbacks(runnable);
要获得更优雅的解决方案,请考虑将延迟作为动画本身的一部分。