Android 使用RecyclerView 报错NoSuchMethodError

异常,方法未找到:

java.lang.NoSuchMethodError: android.support.v4.view.ViewCompat.hasAccessibilityDelegate
at android.support.v7.widget.RecyclerView$Recycler.attachAccessibilityDelegate(RecyclerView.java:3479)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3449)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3340)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1810)
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:356)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1269)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:523)
at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:151)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1988)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2237)
at android.view.View.layout(View.java:14965)


场景:Activity中使用ViewPager滑动分页,ViewPager中使用Fragment,Fragment中使用RecyclerView实现列表显示。Activity---ViewPager---Fragment---RecyclerView。

分析:能编译通过,ViewCompat.hasAccessibilityDelegate方法不是必须调用,具体调用时机没深入研究,一般手机使用时间过长,或运行耗资源的程序时出现。

解决:V4和V7包保持版本一直。项目中使用的V7包是1.7.0_65版本,V4包是1.6.0_45版本,此版本的ViewCompat类中没有hasAccessibilityDelegate方法。

参考:http://stackoverflow.com/questions/29691309/java-lang-nosuchmethoderror-android-support-v4-view-viewgroupcompat-getlayoutmo(英文看着很费劲,不过看着看着就习惯了生气


注:查看jar包版本号,以压缩文件形式打开jar包,META-INF目录,MANIFEST.MF文件,Created-By: 1.6.0_45 (Sun Microsystems Inc.)。还有一些别的信息,没深入研究,用到了再说吧。(Android SDK相关的官方jar包貌似都是这个信息)








猜你喜欢

转载自blog.csdn.net/mengbjy/article/details/49835237
今日推荐