当前位置:  开发笔记 > 编程语言 > 正文

EnterTransitionCoordinator在Android 5.0中导致NPE

如何解决《EnterTransitionCoordinator在Android5.0中导致NPE》经验,为你挑选了2个好方法。

添加退出并输入活动转换到应用程序后,我收到崩溃报告,如下所示:

致命异常:显示java.lang.NullPointerException:尝试在上$ android.view.ViewOverlay OverlayViewGroup.add(ViewOverlay.java空对象引用调用虚拟方法android.view.ViewParent android.view.View.getParent()': 164)在android.上移动android.app.EnterTransitionCoordinition.startSharedElementTransition(EnterTransitionCoordinator.java:325)上的android.view.View.Ov响应动画(EnterTransitionCoordinator.java:598)的android.view.ViewGroupOverlay.add(ViewGroupOverlay.java:63). app.EnterTransitionCoordinator.access $ 200(EnterTransitionCoordinator.java:42)在Android.app的android.app.EnterTransitionCoordinition $ 5 $ 1.run(EnterTransitionCoordinator.java:389)android.app.ActivityTransitionCoordinition.startTransition(ActivityTransitionCoordinator.java:698). EnterTransitionCoordinator $ 5.onPreDraw(EnterTransitionCoordinator.java:386)在android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)在android.view.ViewRootImpl.performTraversa ls(ViewRootImpl.java:1985)在Android.view.ChoreIvers.verTraversal(ViewRootImpl.java:1077)的android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5845)at android.view.Choreographer $ CallbackRecord.run (Choreographer.java:767)位于android.view.Choreographer的舞台上的android.view.doCallbacks(Choreographer.java:580)的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)at android.app.ActivityThread.main(ActivityThread.java:5272)位于com.android的java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invoke(Method.java:372) .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:909)at 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的内部问题(堆栈中的所有系统类)?



1> Markus Jungi..:

在要求API级别22(Android 5.1)进行转换后,崩溃消失了.所以这是最简单的解决方案.如果您需要使用Android 5.0支持此功能,请检查Nikola的答案(我们不会自己尝试避免使用其他代码).



2> Glenn Schmid..:

此Android操作系统错误与共享元素转换期间"被拒绝"元素的处理有关.如果共享元素未附加到窗口,则会拒绝该共享元素(从转换中排除),这可能因为其可见性设置为而发生GONE.

我正在使用的解决方法是在调用之前检查每个潜在的共享元素视图makeSceneTransitionAnimation(),并且如果它的可见性设置为,则仅将其包括在列表中VISIBLE.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有