Intereting Posts
Добавление диалогового окна «Прогресс» в веб-просмотре Метод onFrameAvailable () SurfaceTexture всегда называется слишком поздним Включение виртуализации Intel (VT-X) без опции в BIOS Android-приложение Gridview OnScrollListener ScrollUp и ScrollDown Как передать параметры моему приложению из локальных файлов или из Google Play? Кнопка плавающего действия и белый фон Создавать VPN на Android программно Почему не onRestoreInstanceState вызывается после onStart? Как заставить IntentService немедленно остановить кнопку отмены из Activity? Диалог со списком и сообщением Как реализовать кеширование в приложении android для результатов REST API? Могут ли библиотеки Android в Gradle иметь другие библиотеки Android в качестве зависимостей? Пример AlwaysOnHotwordDetector в Android Git – Android Studio больше не позволяет мне фиксировать изменения и нажать на GitHub Как запустить эмулятор Android для Intel x86 Atom без аппаратного ускорения в Windows 8 для API 21 и 19?

Хореограф NullPointerException

Я некоторое время работаю над существующей кодовой базой и просматриваю нашу службу аварийного журнала. Я заметил исключение, которое случается довольно часто, я не могу воспроизвести эту проблему, и у меня нет контекста для сценария, чтобы попробовать И копаться, так как это довольно большой проект, становится все труднее узнать причину этого исключения.

Я искал в Интернете похожие проблемы и не нашел никакой полезной информации. Если кто-то знаком с этой проблемой, ваша помощь будет принята с благодарностью.

Stacktrace выглядит следующим образом:

java.lang.NullPointerException at android.animation.PropertyValuesHolder.setupSetterAndGetter(PropertyValuesHolder.java:505) at android.animation.ObjectAnimator.initAnimation(ObjectAnimator.java:487) at android.animation.ValueAnimator.setCurrentPlayTime(ValueAnimator.java:517) at android.animation.ValueAnimator.start(ValueAnimator.java:936) at android.animation.ValueAnimator.start(ValueAnimator.java:946) at android.animation.ObjectAnimator.start(ObjectAnimator.java:465) at android.animation.AnimatorSet$1.onAnimationEnd(AnimatorSet.java:579) at android.animation.ValueAnimator.endAnimation(ValueAnimator.java:1056) at android.animation.ValueAnimator.access$400(ValueAnimator.java:50) at android.animation.ValueAnimator$AnimationHandler.doAnimationFrame(ValueAnimator.java:644) at android.animation.ValueAnimator$AnimationHandler.run(ValueAnimator.java:660) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) at android.view.Choreographer.doCallbacks(Choreographer.java:574) at android.view.Choreographer.doFrame(Choreographer.java:543) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5105) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) at dalvik.system.NativeStart.main(NativeStart.java) 

Приветствия.

Solutions Collecting From Web of "Хореограф NullPointerException"

Проблема оказалась анимацией, вызванной Handler с использованием postDelayed() , что в конечном итоге привело к попытке анимировать ссылку на нулевой View , поскольку она не была очищена должным образом в соответствии с событиями жизненного цикла хоста.

Возможно, у вас тэгрит равен нулю, распечатайте журнал с помощью аниматораSet.getTarget (), чтобы увидеть

Я также получаю эту трассировку стека, когда использую: ObjectAnimator animator = ObjectAnimator.ofFloat (это «шкала», 1); …. animator.start ()

Запустить в android 4.0.X, но это нормально для более высокой версии, вы также можете сослаться на фиксацию этого парня, хотя я не понимаю, как это исправить, но это определенная причина.

Теперь я прошел через это исключение и выяснил, что получаю экземпляр представления с анимацией из getActivity().findViewById . Хотя я был в фрагменте, мне пришлось создать его экземпляр из корневого окна, завышенного, содержащего представление.

Я в основном переместил представление из макета Activity в Fragment, но не изменил код. Итак, rootview.findViewById решил мою проблему.

Мой стек:

 java.lang.NullPointerException at android.animation.PropertyValuesHolder.setupSetterAndGetter(PropertyValuesHolder.java:505) at android.animation.ObjectAnimator.initAnimation(ObjectAnimator.java:392) at android.animation.ValueAnimator.setCurrentPlayTime(ValueAnimator.java:495) at android.animation.ValueAnimator.start(ValueAnimator.java:913) at android.animation.ValueAnimator.start(ValueAnimator.java:923) at android.animation.ObjectAnimator.start(ObjectAnimator.java:370) at eu.davidea.passwordcloud.ui.ItemDetailFragment$3.onClick(ItemDetailFragment.java:162) at android.view.View.performClick(View.java:4084) at android.view.View$PerformClick.run(View.java:16966) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) 

Поверьте мне, я нашел решение этой проблемы сбоя на устройствах 4.0.x.

Проблема заключается в том, что вы используете ObjectAnimator без значения «start» и «end», устройства api on 4.0.x не могут найти значение «start» для реализации.

Например, это приведет к сбою на устройствах 4.0.x

 int endRadiusValue = 10; ObjectAnimator .ofFloat(roundedGradientDrawable, "cornerRadius", endRadiusValue) .setDuration(200) .start(); 

И этот код отлично работает на всех устройствах уровня api

 int startRadiusValue = 0; int endRadiusValue = 10; ObjectAnimator .ofFloat(roundedGradientDrawable, "cornerRadius", startRadiusValue, endRadiusValue) .setDuration(200) .start(); 

Введите описание изображения здесь

Я решаю проблему, добавив анимацию в AnimSet так: