小编mko*_*acz的帖子

当转换到其他Activity过早调用时,ActivityTransitionCoordinator中的ViewRootImpl.setPausedForTransition(boolean)NullPointerException

在我的Android应用程序中,我有一个启动画面,我在其中进行一些设置和加载.我的应用程序使用默认值explode作为a windowEnterTransition和a windowExitTransitionchangeImageTransformplus changeBounds转换设置为windowSharedElementEnterTransitionwindowSharedElementExitTransition.为方便起见,我Activity使用静态方法开始下一个方法,其中我将当前Activity作为a Context和共享元素传递.该帖子的第二部分提供了该代码.

其中一个场景是没有任何东西可以加载,所以应用程序几乎会立即触发下一个Activity.问题是,在这种情况下,应用程序以某种方式神秘地崩溃,ActivityTransitionCoordinator并在本文的下一部分中给出了一个堆栈.对内部的调试表明,ViewRootImpl实现的是null,并且没有空检查,因此调用viewRoot.setPausedForTransition(false)抛出a NullPointerException.你可以在下面的代码中找到这个不吉利的地方.

为了关注这个失败的场景,让我们假设一个逻辑决定没有任何东西可以加载而下一个Activity应该立即启动,这很简单,可以简化为刚开始提到的活动.

没有区别,如果第二的开始Activity被调用中onCreate(),onResume()onEnterAnimationComplete()方法.我甚至尝试在通过调用获取的Transition上添加一个侦听器,getWindow().getSharedElementEnterTransition()并在转换完成时getWindow().getEnterTransition()允许启动下一个侦听器Activity.给定Transitions的不是null,但app永远不会进入附加的侦听器的方法.

我现在使用的解决方法是安排一个Runnable调用下一个Activity延迟的.

我想知道这是否是Android(一个SupportLibrary更具体的)问题,或者我错过了什么.有谁遇到过类似的问题?

堆栈跟踪:

08-12 00:35:32.550 26453-26453/com.faver.mkoslacz.faverdemo E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.faver.mkoslacz.faverdemo, PID: 26453
                                                                              java.lang.NullPointerException: Attempt to invoke virtual method …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception android-support-library android-transitions

8
推荐指数
1
解决办法
1958
查看次数