android.content.res.Resources$NotFoundException: 资源 ID #0x7f07007e

android.content.res.Resources$NotFoundException: Resource ID #0x7f07007e

我正在尝试在应用中实现类似的功能,这里是回收视图中 Viewholder 的片段。

回收商定制适配器

public class PostAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

TextView title,user,description,tag,time,designation;
Long date;
ImageView imageView,bookmark,profilepic,sharebutton,like;
RelativeLayout head;
LinearLayout content;
DatabaseReference reference;
Context context;
String name;

public void setContext(Context context) {
    this.context = context;
}

public PostAdapterViewHolder (final View itemView) {
    super(itemView);
    itemView.setOnClickListener(this);
    head = (RelativeLayout) itemView.findViewById(R.id.head);
    content = (LinearLayout) itemView.findViewById(R.id.content);
    imageView =(ImageView)itemView.findViewById(R.id.imageview);
    designation = (TextView) itemView.findViewById(R.id.designation);
    like =(ImageView)itemView.findViewById(R.id.like);
    profilepic = (ImageView) itemView.findViewById(R.id.imageView2);
    bookmark =(ImageView)itemView.findViewById(R.id.bookmark);
    title = (TextView) itemView.findViewById(R.id.title);
    description = (TextView) itemView.findViewById(R.id.description);
    time = (TextView) itemView.findViewById(R.id.date);
    tag = (TextView) itemView.findViewById(R.id.tag);
    sharebutton = (ImageView) itemView.findViewById(R.id.sharebutton);
    user = (TextView) itemView.findViewById(R.id.username);

    like.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ImageView i = (ImageView) itemView.findViewById(R.id.like);
            Drawable a = i.getBackground();

            if (a.getConstantState().equals(context.getDrawable(R.drawable.emptyup).getConstantState())){

                i.setImageDrawable(context.getDrawable(R.drawable.fillup));

            } else {

                i.setImageDrawable(context.getDrawable(R.drawable.emptyup));

            }

        }
    });

  }
} 

}

01-09 10:43:45.747 6602-6602/ctize.connectplus.com.communitize E/AndroidRuntime: FATAL EXCEPTION: main Process: ctize.connectplus.com.communitize, PID: 6602 android.content.res.Resources$NotFoundException: Resource ID #0x7f07007e at android.content.res.Resources.getValue(Resources.java:1397) at android.content.res.Resources.getDrawable(Resources.java:843) at android.content.Context.getDrawable(Context.java:458) at ctize.connectplus.com.communitize.PostAdapterViewHolder.onClick(PostAdapterViewHolder.java:98) at android.view.View.performClick(View.java:5226) at android.view.View$PerformClick.run(View.java:21350) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5582) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

请尝试干净构建,可能是 R 文件有误

您正在使用 context.getDrawable(R.drawable.fillup),它只能在高于 LOLLIPOP 的版本中使用。使用 context.getResources().getDrawable(R.drawable.fillup) 从资源中获取图像。

通过查看日志。问题出在你的 drawable 后台看看吧。您已键入 X24 图片更改它,它将解决您的问题。

其次,您一次看到两张图片。因此,您需要删除在 .xml 文件中设置的背景,这样就可以了。

<CheckBox android:layout_width="wrap_content"
 android:layout_height="wrap_content" 
 android:text="new checkbox"
 android:background="@drawable/checkbox_background" 
 android:button="@drawable/checkbox" />

尝试使用复选框而不是 ImageView

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_checked="true" android:state_focused="true"
  android:drawable="@drawable/fillup" />
 <item android:state_checked="false" android:state_focused="true"
  android:drawable="@drawable/emptyup" />
 <item android:state_checked="false"
  android:drawable="@drawable/emptyup" />
 <item android:state_checked="true"
  android:drawable="@drawable/fillup" />
</selector>

if (a.getConstantState().equals(context.getDrawable(R.drawable.emptyup).getConstantState())){

            i.setImageDrawable(context.getDrawable(R.drawable.fillup));

        } else {

            i.setImageDrawable(context.getDrawable(R.drawable.emptyup));

        }

由于您的 android 版本问题,这些行给您带来了错误。

关注这个https://developer.android.com/guide/topics/graphics/vector-drawable-resources.html#vector-drawables-backward-solution, 您应该使用 setImageResource() 而不是 setImageDrawable()

您的应用程序在应显示 activity 相关内容时崩溃?

检查你 activity 中是否有这样的可绘制 v24

然后,如果是,请将文件显示从 Android 更改为文件层次结构最顶端的 Project: 从

并将目录drawable v-24中的drawable拖放到目录drawable.

就是这样。可以试试

编辑:我发现问题可能出现在 Android 6 API 23 而不是更高 API

检查drawable资源图片是否在drawable文件夹, drawable-24 .
我已经遇到了这个问题,但通过将图像资源移动到 drawable 文件夹来解决它。