Intereting Posts
API Google Диска – Android – Как получить идентификатор файла диска? Какую версию Android я должен разработать? Диалоговое окно Android Image / Popup того же размера, что и изображение, и без рамки Какую папку разместить 9png изображения? Как изменить цвет изображения динамически в Android? Аутентификация веб-API ASP.NET Android получает PID других приложений Плагин слишком стар, обновите его до более поздней версии или установите переменную окружения ANDROID_DAILY_OVERRIDE в Поведение компоновщика нестандартного макета Широковещательные приемники не работают в Android 6.0 Marshmallow Вызывает ли View.removeAllViews () выпуск памяти? Котлин: Итерации через JSONArray Как переопределить стили библиотеки, которая имеет свою собственную активность Веб-браузер Android с подключением https и базовым auth. Как это сделать? Facebook SDK 3.0 – получить идентификатор пользователя Facebook и токен доступа

EnterTransitionCoordinator вызывает NPE в Android 5.0

После добавления выхода и перехода активности в приложение я получаю отчеты о сбоях, например:

Fatal Exception: java.lang.NullPointerException: попытка вызвать виртуальный метод «android.view.ViewParent android.view.View.getParent ()» в ссылке на нулевой объект в android.view.ViewOverlay $ OverlayViewGroup.add (ViewOverlay.java: 164) в android.view.ViewGroupOverlay.add (ViewGroupOverlay.java:63) в android.app.EnterTransitionCoordinator.startRejectedAnimations (EnterTransitionCoordinator.java:598) в android.app.EnterTransitionCoordinator.startSharedElementTransition (EnterTransitionCoordinator.java:325) в android. App.EnterTransitionCoordinator.access $ 200 (EnterTransitionCoordinator.java:42) в android.app.EnterTransitionCoordinator $ 5 $ 1.run (EnterTransitionCoordinator.java:389) в android.app.ActivityTransitionCoordinator.startTransition (ActivityTransitionCoordinator.java:698) в android.app. EnterTransitionCoordinator $ 5.onPreDraw (EnterTransitionCoordinator.java:386) в android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:847) в android.view.ViewRootImpl.performTraversa Ls (ViewRootImpl.java:1985) в android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1077) в android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5845) в android.view.Choreographer $ CallbackRecord.run (Хореограф.ява: 767) на android.view.Choreographer.doCallbacks (Хореограф.java:580) на android.view.Choreographer.doFrame (Хореограф.java:550) на android.view.Choreographer $ FrameDisplayEventReceiver.run (Хореограф. Java: 753) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:135) на Android.app.ActivityThread.main (ActivityThread.java:5272) в java.lang.reflect.Method.invoke (Method.java) в java.lang.reflect.Method.invoke (Method.java:372) в com.android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:909) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:704)

Это не воспроизводимо, но количество сбоев значимо.

Проведя некоторые исследования, я наткнулся на эту фиксацию, предположив, что это (на самом деле) внутренняя ошибка в Android: https://android.googlesource.com/platform/frameworks/base/+/83c692efd3c53050fce132dfd2ef21763d3cf010%5E%21/#F0

Все отчеты об авариях – 5.0, 5.0.1 или 5.0.2. Поскольку 5.1 имеет более широкое распространение, но не показывает сбоев, похоже, что EnterTransitionCoordinator был зафиксирован в 5.1.

Таким образом, возможным решением было бы проверить уровень API на уровне 22 или выше, и тогда выполняются только переходы. Однако мне интересно, есть ли лучший способ; Возможно, обходное решение, несмотря на это, кажется, является внутренним делом Android (все системные классы в стеке)?

Solutions Collecting From Web of "EnterTransitionCoordinator вызывает NPE в Android 5.0"

После того, как для перехода на уровень API 22 (Android 5.1) потребуется переход, сбои исчезли. Так что это самое простое решение. Если вам нужно поддержать это с помощью Android 5.0, проверьте ответ Никола (мы сами не пытались избежать дополнительного кода).

Для более низкого, чем API, чем 5.1, отложите переход общего элемента, используя postponeEnterTransition() . Зарегистрируйте слушателя OnDrawListener в ViewTreeObserver в представлении декора (возможно) или в виде содержимого ( android.R.id.content ) и начните переход, как только onDraw() . Не забудьте отменить регистрацию слушателя, как только вы начнете переход.

Эта ошибка ОС Android связана с обработкой «отклоненных» элементов во время перехода общего элемента. Общий элемент будет отклонен (исключен из перехода), если он не прикреплен к окну, что может произойти, потому что его видимость установлена ​​в GONE .

Обходной путь, который я использую, – проверить каждый потенциальный общий вид элемента перед вызовом makeSceneTransitionAnimation() и включить его только в список, если его видимость установлена ​​в VISIBLE .