2010-02-03 4 views
4

J'utilise le code suivant pour créer un ProgressDialog (dans mon Activity):Problème d'utilisation ProgressDialog avec onCreateDialog/onPrepareDialog

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case DIALOG_LOOKUP: 
      return new ProgressDialog(this, ProgressDialog.STYLE_SPINNER); 
    } 
    return null; 
} 

@Override 
protected void onPrepareDialog(int id, Dialog dialog) { 
    switch (id) { 
     case DIALOG_LOOKUP: 
      dialog.setCancelable(true); 
      dialog.setTitle(R.string.dialogLookup_title); 
      ((ProgressDialog)dialog).setMessage(getResources().getString(R.string.dialogLookup_message)); 
      dialog.setOnCancelListener(new OnCancelListener() { 
       @Override 
       public void onCancel(DialogInterface dialog) { 
        Toast.makeText(MyActivity.this, "canceled", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      break; 
    } 
} 

Le problème est qu'il met pas vraiment le titre et le mettre dans une double-boîte bizarre.

Il me donne ceci:

bad progress

mais je me attends quelque chose comme ceci:

good progress

Toutes les idées?

+0

Est-ce votre onPrepareDialog une méthode sur une sous-classe de dialogue? – Rintoul

+0

Non. Comme je l'ai dit, ils sont dans l'activité: http://developer.android.com/reference/android/app/Activity.html#onPrepareDialog%28int,%20android.app.Dialog%29 –

Répondre

6

J'ai juste essayé votre échantillon et il semble changer de ProgressDialog.STYLE_SPINNER à ProgressDialog.STYLE_HORIZONTAL a résolu le problème bizarre de double-boîte.

Et il affiche également le titre et le texte.

Edit:

Vous passez ProgressDialog.STYLE_SPINNER dans le constructeur ProgressDialog. De la doc, le 2ème argument est un ID de thème.

Vous devez créer un objet ProgressDialog et utiliser le setProgressStyle à ProgressDialog.STYLE_SPINNER

case DIALOG_LOOKUP: 
    ProgressDialog pdlg = new ProgressDialog(this); 
    pdlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    return pdlg; 
+0

D'oh ... comment aurais-je raté ça? Je ne reçois toujours pas de titre. –

+0

Eh bien, pour une raison quelconque, j'ai dû déplacer mon 'setTitle()' dans 'onCreateDialog()', mais cela semble l'avoir fait. Merci pour l'aide. –

+0

C'était il y a longtemps, mais au cas où cela aiderait quelqu'un: j'ai trouvé que dialog.setTitle (...) ne fonctionne que dans onPrepareDialog() s'il est également défini dans onCreateDialog(). (essayé le 4.1.2) – Crocodile

Questions connexes