我不知道为什么,但是当我在这个例子中使用三元运算符时,我得到了这个奇怪的错误:
我认为这与Java从运算符转换结果的方式有关,但它仅在某些特定情况下发生。
感谢您的任何解释。
注意:我搜索了一个,但只能找到与NPE相关的答案。
- 编辑 -
该应用使用:
在Android Studio 2.0 Beta 5上使用相应的gradle版本进行测试
答案 0 :(得分:11)
原因在于三元运算符的工作方式。
它总是将两个对象都投射到它的两个对象的最近超级类型。
在您的情况下,它是BaseInterpolator
,因为您的targetSDK版本设置为23
。
但是,由于你的minSDK是14
,所以演员阵容不适用于所有设备。因此错误。
要修复此问题,您可以向这两个对象添加TimeInterpolator
的显式强制转换。
答案 1 :(得分:0)
我通过以下代码修复此问题:
public class MyDecelerateInterpolator implements Interpolator {
private DecelerateInterpolator interpolator = null;
public MyDecelerateInterpolator() {
interpolator = new DecelerateInterpolator();
}
public MyDecelerateInterpolator(float factor) {
interpolator = new DecelerateInterpolator(factor);
}
@Override
public float getInterpolation(float input) {
return interpolator.getInterpolation(input);
}
}