Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android AlertDialog exception "Resources$NotFoundException"

I'm getting an exception when trying to display a dialog box in Android. My AlertDialog is called from a FragmentActivity with the following code:

public static void displayShare(){
    // show share options
    CharSequence selections[] = new CharSequence[] {"Email", "SMS", "Tweet", "Phone Call", "Cancel"};
    final AlertDialog.Builder builder = new AlertDialog.Builder(CommonVariables.mContext);
    builder.setTitle("Share your location via...");
    builder.setItems(selections, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch(which){
                case 0: // Email
                   callEmailMethod();
                    break;
                case 1: // SMS
                    callSMSMethod();
                    break;
                case 2: // Tweet
                    callTwitterMethod();
                    break;
                case 3: // Phone Call
                    callNumberMethod();
                    break;
                case 4:
                    dialog.cancel();
                    break;
            }
        }
    });
    builder.show();
}

The following error is received at the line: builder.show();

    FATAL EXCEPTION: main
Process: com.au.ewn.melbwater, PID: 2839
android.content.res.Resources$NotFoundException: Resource ID #0x0
    at android.content.res.Resources.getValue(Resources.java:1351)
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2774)
    at android.content.res.Resources.getLayout(Resources.java:1165)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:421)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at android.support.v7.app.AlertController$AlertParams.createListView(AlertController.java:879)
    at android.support.v7.app.AlertController$AlertParams.apply(AlertController.java:856)
    at android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:899)
    at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:917)
    at com.au.ewn.activities.MainFragment.displayShare(MainFragment.java:1081)
    at com.au.ewn.activities.HelpMeScreen$2.onClick(HelpMeScreen.java:257)
    at android.view.View.performClick(View.java:5198)
    at android.view.View$PerformClick.run(View.java:21147)
    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:5417)
    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)

I have tried everything (except the correct solution, it seems). Any help is appreciated, thanks.

Note: CommonVariables.mContext is the context of the FragmentActivity and is not null: CommonVariables.mContext = FragmentAct.this;

like image 236
Nickmccomb Avatar asked Jul 13 '16 01:07

Nickmccomb


1 Answers

Sorry if I late to the party. But I also experienced this issue and those 3 solutions I found in internet like :

  1. Use baseContext.
  2. Using when initiate dialog.
  3. Missing layout in specific drawable folder.

what helped me solved the issue is my alerdialog is located in fragment, and it solved by calling requiredContext() instead of baseContext or applicationContext when initiating alertdialog.

like image 194
Bhimbim Avatar answered Oct 03 '22 15:10

Bhimbim