RecyclerView适配器中无法解析R.anim,调用R.anime.bounce_interpolator报错求因
R.anim及R.anime.bounce_interpolator报错的问题 嘿,我来帮你排查这个Android适配器里的资源解析问题,这几个点大概率是元凶:
包导入踩坑:很多时候会不小心导入系统自带的
android.R而非你自己项目的自定义R类(比如com.yourappname.R)。如果你的适配器构造方法或者初始化代码里用错了R类,系统肯定找不到你自己res/anim目录下的资源,直接报无法解析的错误。赶紧检查下适配器顶部的import语句!拼写错误(最可能的直接原因):你写的
R.anime.bounce_interpolator里把anim拼成了anime!Android的动画资源对应的R类字段是R.anim,因为资源目录是res/anim/,这个拼写错误绝对会导致持续报错,先把这个改过来试试。资源未同步或未创建:如果你的
res/anim目录下根本没有bounce_interpolator.xml这个插值器资源,或者刚创建完资源但Android Studio没同步项目,R类就不会生成对应的字段。这种情况可以点击工具栏的Sync Project with Gradle Files按钮,或者执行Build > Clean Project再Build > Rebuild Project来强制同步。适配器构造方法的上下文问题:如果你的适配器构造方法没有正确传入上下文,或者在调用资源的方法(比如
onBindViewHolder)里用了无效的上下文,也会间接导致资源解析失败。比如有些同学在适配器里直接调用getContext()但没做非空判断,或者构造方法里没传递上下文,导致无法正确访问应用的资源文件。方法调用的资源类型错误:假设你是在适配器的某个方法里加载插值器,要是用错了加载方法也会报错。比如插值器应该用
AnimationUtils.loadInterpolator(context, R.anim.bounce_interpolator)来加载,要是你把它当成普通动画用AnimationUtils.loadAnimation()来加载,也会连带报资源无法解析的错误。
内容的提问来源于stack exchange,提问作者Adrian Coutsoftides

