【发布时间】:2018-11-30 08:21:35
【问题描述】:
我的应用在 google play 上似乎有一个特定的某些 Android 8.0 设备的错误。
很遗憾,到目前为止,我无法自己复制该错误。
这是错误日志:
android.content.res.Resources$NotFoundException:
at android.content.res.ResourcesImpl.getValueForDensity (ResourcesImpl.java:204)
at android.content.res.Resources.getDrawableForDensity (Resources.java:875)
at android.content.res.Resources.getDrawable (Resources.java:818)
at android.content.res.Resources.getDrawable (Resources.java:793)
at com.aresproductions.booksummaries.fragments.RecyclerViewAdapterBook.onBindViewHolder (RecyclerViewAdapterBook.java:188)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder (RecyclerView.java:6508)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder (RecyclerView.java:6541)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline (RecyclerView.java:5484)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:5750)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5589)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5585)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next (LinearLayoutManager.java:2231)
at android.support.v7.widget.LinearLayoutManager.layoutChunk (LinearLayoutManager.java:1558)
at android.support.v7.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1518)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:610)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2 (RecyclerView.java:3719)
at android.support.v7.widget.RecyclerView.dispatchLayout (RecyclerView.java:3436)
at android.support.v7.widget.RecyclerView.onLayout (RecyclerView.java:3988)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.support.v4.view.ViewPager.onLayout (ViewPager.java:1769)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild (HeaderScrollingViewBehavior.java:132)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild (ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild (AppBarLayout.java:1361)
at android.support.design.widget.CoordinatorLayout.onLayout (CoordinatorLayout.java:874)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout.java:1172)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1791)
at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1635)
at android.widget.LinearLayout.onLayout (LinearLayout.java:1544)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1791)
at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1635)
at android.widget.LinearLayout.onLayout (LinearLayout.java:1544)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout (DecorView.java:759)
at android.view.View.layout (View.java:19692)
at android.view.ViewGroup.layout (ViewGroup.java:6057)
at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:2515)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2224)
at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1410)
at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6834)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1039)
at android.view.Choreographer.doCallbacks (Choreographer.java:851)
at android.view.Choreographer.doFrame (Choreographer.java:742)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1025)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6809)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)
所以它是我的 onBindViewHoler 中的 android.content.res.Resources$NotFoundException。
这是我的代码
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
BookItemViewHolder bookItemHolder = (BookItemViewHolder) holder;
BookModel book = mRecyclerViewItems.get(position);
// Add the book item details to the book item view.
bookItemHolder.getTextViewName().setText(book.getName());
bookItemHolder.getTextViewAuthor().setText(book.getAuthor());
bookItemHolder.getTextViewYear().setText(book.getYear() + "");
// Book Covers
int resourceId = mContext.getResources().getIdentifier(book.getCover(), "drawable", mContext.getPackageName());
Drawable drawable = mContext.getResources().getDrawable(resourceId); //Error Here!
bookItemHolder.getImageViewCover().setImageDrawable(drawable);
}
我的书封面图片包含在 drawable-nodpi 文件夹中。 再次提醒您,这只发生在某些 Android 8.0 设备上。
谢谢
【问题讨论】:
-
检查您的drawable是否在drawable-v24文件夹中,如果是则移动到drawable文件夹。
-
你有解决这个问题的办法吗?
标签: java android android-drawable android-resources android-8.0-oreo