2014-12-16 2 views
-3

Я получаю исключение нулевого указателя в строке, приведенной в коде ниже. Проблема в том, что исключение происходит случайным образом. Много раз он просто работает, но иногда он выдает исключение (скажем, 5% раз). Любая помощь будет оценена по достоинству.Исключение в AnimationUtils.loadAnimation() (иногда)

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

Какое исключение? – Hacketo

+0

Fatal Exception: java.lang.NullPointerException – VipulKumar

+0

, вызванный getActivity(), вы должны проверить, не является ли getActivity не нулем, как и для контекста, перед созданием анимации. – Hacketo

ответ

2

Проблема в том, что ваш обработчик не привязан к жизненному циклу фрагмента. Сообщения обработчика могут срабатывать даже после отсоединения фрагмента от его активности, а getActivity() вернет значение null.

В качестве быстрого исправления вы можете поместить свой Runnable в переменную и очистить обработчик, например. onDestroyView():

handler.removeCallbacks(runnable); 

Для более элегантного решения, рассмотреть вопрос о внесении задержки: часть самой анимации.

+0

Большое вам спасибо. Это похоже на действительное решение, но я не могу точно сказать, потому что нет возможности проверить. Это происходит случайно. Я принял ответ, и я снова спрошу, если проблема не исчезнет. – VipulKumar

Смежные вопросы