Resources$NotFoundException: Resource ID #0x0 in AlertDialog

Although I have searched various questions/answers on both Stack Overflow and other sites, I have not found a solution to my problem.

I have a RecyclerView, and in its adapter, I have created something similar to a OnLongClickListener, which I am calling a OnEntryLongClickListener to avoid confusion.

  • OnTouchEvent not working on child views
  • Android plugin install problems in eclipse
  • Size of bitmap returned by camera via intent?
  • ActionBar Up button and Navigation pattern
  • How do I remove lines between ListViews on Android?
  • How to Add ViewPager Indicator Headings Like Google+ App
  • I am using an AlertDialog to display a dialog with list items for different actions. However I am getting the following error:

    E/AndroidRuntime: android.content.res.Resources$NotFoundException: Resource ID #0x0
    …at android.content.res.Resources.getValue(Resources.java:2345)
    …at android.content.res.Resources.loadXmlResourceParser(Resources.java:3910)
    …at android.content.res.Resources.getLayout(Resources.java:2161)
    …at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
    …at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
    …at android.support.v7.app.AlertController$AlertParams.createListView(AlertController.java:734)
    …at android.support.v7.app.AlertController$AlertParams.apply(AlertController.java:711)
    …at android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:883)
    …at com.mycompany.myapp.ThisActivity$2.onEntryLongClick(ThisActivity.java:135)
    …at com.mycompany.myapp.adapter.RVAdapter$RVViewHolder.onLongClick(RVAdapter.java:41)
    …at android.view.View.performLongClick(View.java:5236)

    Below is the relevant code I am using:

    adapter.setOnEntryLongClickListener(new RVAdapter.OnEntryLongClickListener() {
        @Override
        public void onEntryLongClick(View view, int position) {
            final MiniEntry thisEntry = entryList.get(position);
            AlertDialog.Builder builder = new AlertDialog.Builder(getBaseContext());
            builder.setTitle(thisEntry.getEntryName()););
            builder.setItems(R.array.quickActions, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // Other code here
                }
            });
            AlertDialog alert = builder.create(); // The error log points to this line
            alert.show();
        }
    });
    mRecyclerView.setAdapter(adapter);
    

    As well as the XML I am using for the array:

    <string-array name="quickActions">
        <item>Add to Favourites</item>
        <item>More information</item>
    </string-array>
    

    I’m not sure if it matters, but I am importing the AlertDialog from android.support.v7.app.AlertDialog (from the v7 Support Library)

  • Adding Endless parallax background in cocos2d android
  • EditText not scrollable inside ScrollView
  • Difference between onKey(), OnKeyDown() and dispatchKeyEvent() methods provided by Android?
  • Accelerometer stops delivering samples when the screen is off on Droid/Nexus One even with a WakeLock
  • Why won't gradle override Java classes in different Android flavors?
  • Center CheckBox drawable within itself
  • 2 Solutions collect form web for “Resources$NotFoundException: Resource ID #0x0 in AlertDialog”

    Change getBaseContext() in the AlertDialog.Builder instantiation to the current Activity instance. For example:

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    

    An AlertDialog requires certain resources whose values are provided by the themes and styles attached to the Context it uses. The Context returned by getBaseContext() doesn’t have those attached, but the Activity does. Indeed, whenever a Context is needed for a UI component – e.g., Dialogs, Views, Adapters, etc. – the current Activity is usually what you want to use.

    Try putting an style for your Dialog that extends Theme.AppCompat.Light.Dialog.Alert

    <style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert" />

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.MyDialogTheme);
    

    This works for me.

    Greetings

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.