2016-07-13 27 views
7

Ricevo un'eccezione quando provo a visualizzare una finestra di dialogo in Android. Il mio AlertDialog viene chiamato da un FragmentActivity con il seguente codice:

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

Il seguente errore viene ricevuto alla linea: 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) 

Ho provato tutto (tranne la soluzione corretta, a quanto pare). Qualsiasi aiuto è apprezzato, grazie.

Nota: CommonVariables.mContext è il contesto del FragmentActivity e non è nullo: CommonVariables.mContext = FragmentAct.this;

+1

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

+0

Sei sicuro 'mContext' è in corso e non si riferisce a qualche istanziazione passata dell'attività? –

+0

La risposta accettata non è stata d'aiuto, ci ho provato un'ora fa. L'altro commento è stato, non c'era nessuna risorsa di stile per AlertDialog, che era solito essere .. Le gioie di lavorare con più sviluppatori. Grazie per avermi fatto notare! – Nickmccomb

risposta

14

Il problema era che il mio progetto mancava la risorsa stile per l'AlertDialog:

In styles.xml mettere questo :

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

nel codice in cui si crea la finestra di dialogo Avviso mettere questo:

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

Grazie per @Fraranc in questo post per la risposta: Resources$NotFoundException: Resource ID #0x0 in AlertDialog

Problemi correlati