web-dev-qa-db-ja.com

android.content.res.Resources $ NotFoundException:リソースID#0x7f07007e

私はアプリに同様の機能を実装しようとしています、これはリサイクルされたビューのビューホルダーからのスニペットです。

リサイクル業者カスタムアダプター

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:リソース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)at Android.view.View.performClick(View.Java:5226)at Android.view.View $ PerformClick.run(View .Java:21350)Android.os.Handler.handleCallback(Handler.Java:739)at Android.os.Handler.dispatchMessage(Handler.Java:95)at 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.ZygoteでInit.main(ZygoteInit.Java:616)

7
Gaurav Rai

関連するアクティビティを表示する必要があるときにアプリがクラッシュしますか?

あなたの活動の中に、このようなドローアブルv24があるかどうかを確認してください enter image description here

次に、「はい」の場合、ファイルの階層の最上部にあるファイルの表示をAndroidからProjectに変更します:From enter image description here

enter image description here

そして、ディレクトリdrawable v-24のドローアブルをディレクトリdrawableにドラッグアンドドロップします。

それで全部です。よろしければお試しください

編集:問題はAndroid 6 API 23で発生する可能性がありますが、より高いAPIでは発生しないことがわかりました

10
Nicoolasens

ログを確認する。問題はあなたのdrawable背景にありますので、それを見てください。タイプX24画像を変更すると、問題が解決します。

2つ目は、一度に2つの画像が表示されることです。したがって、.xmlファイルで設定している背景を削除する必要があります。これで問題ありません。

6
Umair

Lollipop以降のバージョンでのみ機能するcontext.getDrawable(R.drawable.fillup)を使用しています。 context.getResources().getDrawable(R.drawable.fillup)を使用して、リソースから画像を取得します。

1
WS Ayan
<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 、setImageDrawableの代わりにsetImageResource()を使用する必要があります()

0
Đình Phong

ドローアブルリソースの画像がdrawableフォルダーにあるかどうかを確認しますnotdrawable-24
私はすでにこの問題を抱えていますが、画像リソースをdrawableフォルダに移動することで解決します。

0
Ahmed KHABER