2016-07-13 16 views
7

Ich bekomme eine Ausnahme, wenn Sie versuchen, ein Dialogfeld in Android anzuzeigen. My Alertdialog aus einem FragmentActivity mit dem folgenden Code genannt:

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(); 
} 

Der folgende Fehler wird an der Leitung empfangen: 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) 

Ich habe alles versucht (mit Ausnahme der richtigen Lösung, wie es scheint). Jede Hilfe wird geschätzt, danke.

Hinweis: CommonVariables.mContext ist der Kontext des FragmentActivity und nicht leer ist: CommonVariables.mContext = FragmentAct.this;

+1

http://stackoverflow.com/questions/33025719/resourcesnotfoundexception-resource-id-0x0-in-alertdialog – Bill

+0

Sind Sie sicher, dass 'mContext' aktuell und nicht auf eine frühere Instanziierung der Aktivität bezogen? –

+0

Die angenommene Antwort hat nicht geholfen, ich habe das vor einer Stunde versucht. Der andere Kommentar war, es gab keine Style-Ressource für den AlertDialog, die es früher gab ... Die Freude am Arbeiten mit mehreren Entwicklern. Danke, dass du mich darauf hingewiesen hast! – Nickmccomb

Antwort

14

Das Problem war, dass mein Projekt der Stil Ressource für den Alertdialog fehlte:

In styles.xml diese setzten :

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

In Ihrem Code, wo Sie den Alert-Dialog erstellen setzen diese:

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

Vielen Dank für @Fraranc in diesem Beitrag für die Antwort ein: Resources$NotFoundException: Resource ID #0x0 in AlertDialog

Verwandte Themen