具有空共享元素的Conent Transition NPE

时间:2016-04-11 19:23:09

标签: android android-animation

我正在将内容转换添加到一个非常大的应用程序中,在大多数情况下,我没有任何共享元素,但仍想使用过渡动画。我已将问题跟踪到这行代码:

ActivityOptionsCompat.makeSceneTransitionAnimation(activity, ????);

我已经尝试将Pair数组设置为null或空数组,我尝试将其删除。一切都会导致以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewRootImpl.setPausedForTransition(boolean)' on a null object reference

但是,我只在Android 6.0+上遇到此错误,它在任何版本的Android 5上运行正常。我是否尝试以错误的方式执行此操作?

3 个答案:

答案 0 :(得分:2)

我在源代码中进行了大量挖掘,看起来这是由missed null pointer check that got fixed for Nougat引起的。

我很遗憾不知道如何在6.x上解决这个问题。我想你可以添加一个6.x try / catch,如果它真的在崩溃方面杀了你,但这也可能会抓到你可能不想要它的其他一些东西。

答案 1 :(得分:0)

这不是一个确切的答案,而是一种解决方法;但我已设法通过使用handler.postDelayed(...)Runnable推迟动画来解决此问题。

您可以在this问题中查看我的解决方案的代码。

老实说,对我而言,这仍然是一个过于苛刻的问题,这就是为什么我还在等待更优雅解决方案的答案。此外,我认为只有在创建视图后立即调用转换时,它才适用于类似于我的情况。

答案 2 :(得分:0)

我遇到了类似的问题。问题是我正在设置

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK) 

这导致了我启动转换的活动。删除它解决了我在Android M上的问题。