2010-02-03 80 views
4

我用下面的代碼來創建一個ProgressDialog(在我的Activity):問題使用ProgressDialog與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; 
    } 
} 

的問題是,它實際上沒有設置標題,並把它在一些奇怪的雙盒。

它給我這個:

bad progress

,但我期待更多的東西是這樣的:

​​

任何想法?

+0

是您onPrepareDialog的方法上對話的一​​個子類? – Rintoul 2010-02-03 22:18:56

+0

不,如我所說,他們在活動:http://developer.android.com/reference/android/app/Activity.html#onPrepareDialog%28int,%20android.app.Dialog%29 – 2010-02-03 22:22:20

回答

6

我剛剛試過你的樣品,它似乎從ProgressDialog.STYLE_SPINNER更改爲ProgressDialog.STYLE_HORIZONTAL修復了奇怪的雙盒問題。

它還顯示標題和文本。

編輯:

你傳入ProgressDialog.STYLE_SPINNERProgressDialog構造。

從doc中,第二個參數是一個主題ID。

您必須創建一個ProgressDialog對象,並使用setProgressStyleProgressDialog.STYLE_SPINNER

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

D'oh ...我怎麼可能錯過了?我仍然沒有得到一個標題。 – 2010-02-04 02:01:13

+0

那麼,出於某種原因,我不得不將我的'setTitle()'移動到'onCreateDialog()',但似乎已經做到了。謝謝您的幫助。 – 2010-02-04 02:03:57

+0

很久以前,但它可以幫助任何人:我發現dialog.setTitle(...)只能在onPrepareDialog()中使用,如果它也在onCreateDialog()中設置的話。 (在4.1.2上試過) – Crocodile 2013-04-05 10:33:15