空对象引用上的 TransitionSet ArrayList.size()

TransitionSet ArrayList.size() on a null object reference

开始使用本指南实现带有共享元素和动画的打开图像。

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)

在 Google 中没有发现任何关于此问题的信息,所以我 post 这个问题。

持续时间参数有问题。

你可以这样修复:

需要从 xml 中删除持续时间,并在代码中创建 TransitionSet 后设置它。

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

希望对某人有所帮助。

在我的例子中,发生这个错误是因为我从

导入了 TransitionInflator
import android.support.transition.TransitionInflater

虽然应该从

导入
import android.transition.TransitionInflater

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