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

问题描述 投票:6回答:7

我正在尝试在应用中实现类似功能,这是回收视图中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:致命异常:main流程:ctize.connectplus.com.communitize,PID:6602android.content.res.Resources $ NotFoundException:资源ID#0x7f07007e在android.content.res.Resources.getValue(Resources.java:1397)在android.content.res.Resources.getDrawable(Resources.java:843)在android.content.Context.getDrawable(Context.java:458)在ctize.connectplus.com.communitize.PostAdapterViewHolder $ 2.onClick(PostAdapterViewHolder.java:98)在android.view.View.performClick(View.java:5226)在android.view.View $ PerformClick.run(View.java:21350)在android.os.Handler.handleCallback(Handler.java:739)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:148)在android.app.ActivityThread.main(ActivityThread.java:5582)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

android android-recyclerview onclicklistener android-resources recycler-adapter
7个回答
7
投票

应该显示有关活动时您的应用程序崩溃了吗?

检查您的活动中是否有类似这样的可绘制v24enter image description here

然后,如果是,则在文件层次结构的最顶部将文件的显示从Android更改为Project:从enter image description here

enter image description here

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

就这些。如果可以,请尝试]


6
投票

通过查看日志。问题出在您的drawable背景中。您具有X24类型的图像,请对其进行更改,它将解决您的问题。

第二件事是您一次看到两个图像。因此,您需要删除在.xml文件中设置的背景,一切顺利。


1
投票

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


0
投票
<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>

如果(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版本问题,这些行给您错误。

0
投票
跟随此https://developer.android.com/guide/topics/graphics/vector-drawable-resources.html#vector-drawables-backward-solution,您应该使用setImageResource()而不是setImageDrawable()

0
投票
[检查可绘制资源图像是否在可绘制文件夹中而不是可绘制24中,我已经遇到了这个问题,但是可以通过将图像资源移动到可绘制文件夹中来解决它

-2
投票
请尝试干净的构建,可能是R文件错误
© www.soinside.com 2019 - 2024. All rights reserved.