在一个空对象引用上调用TransitionSet ArrayList.size()

12

按照这篇指南,开始实现带有共享元素和动画的开放图像。

https://android-developers.googleblog.com/2018/02/continuous-shared-element-transitions.html

但是捕获到了一个异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
at android.support.transition.TransitionSet.setDuration(TransitionSet.java:196)
at android.support.transition.TransitionSet.setDuration(TransitionSet.java:60)
at android.support.transition.Transition.<init>(Transition.java:278)
at android.support.transition.TransitionSet.<init>(TransitionSet.java:91)
at android.support.transition.TransitionInflater.createTransitionFromXml(TransitionInflater.java:151)
at android.support.transition.TransitionInflater.inflateTransition(TransitionInflater.java:70)

当调用时

TransitionInflater.from(context).inflateTransition(R.transition.my_transition)
2个回答

28

在Google上没有找到关于这个问题的信息,所以我发了帖子。

问题在于持续时间参数。

您可以像这样修复它:

需要从xml中删除duration,并在代码中创建TransitionSet之后设置它。

val transition = TransitionInflater.from(context).inflateTransition(R.transition.my_transition)
transition.duration = 325

希望对某人有所帮助。


3
好的,我会尽力进行翻译。以下是您需要翻译的内容:看起来你也在关注这个博客。https://android-developers.googleblog.com/2018/02/continuous-shared-element-transitions.html 谢谢你的帮助。 - Sahil Patel
我希望我能够给这个点赞50次。那是一个非常烦人的小错误。请注意,可以使用.apply{ duration = 325L }来缩短一些内容。 - gMale

5
在我的情况下,出现了这个错误是因为我从导入了TransitionInflator。
import android.support.transition.TransitionInflater

虽然它应该从

import android.transition.TransitionInflater

当我修复了导入问题时,错误得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接