NineOldAndroids for MonoDroid

时间:2013-03-16 00:15:32

标签: xamarin.android xamarin

我正在尝试使用NineOldAndroids来实现与3.x之前的设备的向后兼容性,但我遇到了以下构建错误:

  

... / NineOldAndroids / OBJ /调试/生成/ SRC / Com.Nineoldandroids.Animation.AnimatorSet.cs(83,83):   错误CS0508:   Com.Nineoldandroids.Animation.AnimatorSet.SetDuration(long)': return type must be Com.Nineoldandroids.Animation.Animator'匹配   被覆盖的成员   `Com.Nineoldandroids.Animation.Animator.SetDuration(long)'(CS0508)   (NineOldAndroids)

但生成的代码中的签名如下所示:

public override global::Com.Nineoldandroids.Animation.AnimatorSet SetDuration (long p0)

并且AnimatorSet的类签名如下所示:

public sealed partial class AnimatorSet : global::Com.Nineoldandroids.Animation.Animator {

问题是,因为AnimatorSet是从Animator继承的,所以我不确定为什么它应该是一个问题。

您是否知道或知道如何修复MonoDroid的NineOldAndroids?

1 个答案:

答案 0 :(得分:0)

这些错误消息是因为C#不支持Covariant Return Types而Java≥1.5。

将这些行添加到Transforms/Metadata.xml

<attr path="/api/package/class[@name='AnimatorSet']/method[@name='setDuration']" name="managedReturn">Com.Nineoldandroids.Animation.Animator</attr>
<attr path="/api/package/class[@name='ValueAnimator']/method[@name='setDuration']" name="managedReturn">Com.Nineoldandroids.Animation.Animator</attr>