SDKを最新バージョンに更新しましたが、今ではリントエラーが発生しています。
エラー:タイプanimator [ResourceType]のリソースが必要です
エラーは次の行で発生します。
AnimatorInflater.loadAnimator(context, R.anim.right_slide_in)
参照されるリソース/res/anim/right_slide_in.xml
は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:interpolator="@Android:anim/linear_interpolator"
Android:valueTo="0"
Android:valueFrom="1.0"
Android:propertyName="xFraction"
Android:valueType="floatType"
Android:duration="450" />
以前は常に機能していました。なぜ私がそのエラーを受け取っているのか誰かが説明できますか?
Animator
リソースを間違ったディレクトリに保存するため、エラーが発生します! AnimatorInflater
は保存するフォルダーに関係なくxmlをロードできるため、以前は機能していました。
R.anim.*
_フォルダーの_res/anim/
_リソースは、ビューアニメーション用です。R.animator.*
_フォルダーの_/res/animator/
_リソースは、Animators
用です。したがって、エラーを修正するには、Animator
リソースを_/res/anim/
_から_/res/animator/
_に移動するだけです。
これは、リソースタイプの注釈がサポートライブラリに追加されるまで、まったく違いはありませんでした。長い間、これらの注釈には、多くの新しいリントチェックもありました。
将来、このようなエラーが発生した場合は、注釈を見て、何が間違っているのかを把握できます。たとえば、AnimatorInflater
のloadAnimator()
の実装は次のようになります。
_public static Animator loadAnimator(Context context, @AnimatorRes int id)
throws NotFoundException {
return loadAnimator(context.getResources(), context.getTheme(), id);
}
_
Idパラメータの_@AnimatorRes
_注釈は、Animator
リソースのみをここに渡す必要があることを示します。 _@AnimatorRes
_のドキュメントを見ると、次のようになっています。
整数のパラメーター、フィールド、またはメソッドの戻り値は、アニメーターリソース参照(Android.R.animator.fade_inなど)であることが期待されることを示します。
説明でまだエラーが説明されていない場合、例では通常説明しています;)