首页 文章

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

提问于
浏览
4

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

Recycler customadapter

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进程:ctize.connectplus.com.communitize,PID:6602 android.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)at ctize.connectplus.com.communitize.PostAdapterViewHolder $ 2.onClick(PostAdapterViewHolder.java:98)at android.view.View.performClick(View.java:5226)at 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)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) )在com.android.internal.os.Zygo teInit.main(ZygoteInit.java:616)

6 回答

  • -1

    通过查看日志 . 问题出在你的 drawable 背景中看一看 . 您有类型 X24 图像更改它,它将解决您的问题 .

    第二件事是你一次看到两个图像 . 所以你需要删除你在 .xml 文件中设置的背景,你就可以了 .

  • 4

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

  • 1
    <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版本问题,这些行给你错误 .

  • 0

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

  • 1

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

    检查你的活动中是否有像这样的可绘制的v24
    enter image description here

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

    enter image description here

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

    就这样 . 试试它是否正常

  • 0

    请尝试一个干净的构建,可能是R文件是错误的

相关问题