2011-01-06 40 views
0

我有一個非常奇怪的行爲,我找不到它的原因。 我在onCreate()上做的最後一件事是調用某個方法。 我使用的方法
progressDialog = ProgressDialog.show(this,null,「註冊Moish'd!服務器」,true,false);
第一次運行我得到BadTokenException:無法添加窗口的progressDialog行。 第二次運行它通過它。
我在論壇上看到,如果活動處於「完成」過程的中間,可能會導致這樣的情況。
經過長時間的調試測試,我試過要求isFinishing()。奇怪的東西 - 在調用方法之前,isFinishing()返回false。在我再次詢問的方法的第一行中,現在isFinishing()返回true。 怎麼可能?!?在進入方法之前的最後一行中,它不是「完成」,在方法的第一行中,它突然「完成」,當沒有任何事情發生時(當然不是調用finish())。任何人 ?!?當沒有調用完成()導致BadTokenException時輸入「完成」狀態

回答

0

我不認爲您可以在onCreate中彈出ProgressDialog,因爲您的Activity的主窗口尚未繪製。 嘗試將 ProgressDialog.show()呼叫移至您的 onResume方法。

UPDATE

好吧,也許你可以試試這個,然後:

private static final int DIALOG_INIT = 0; 
... 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    showDialog(DIALOG_INIT); 
} 

@Override 
protected Dialog onCreateDialog(int id) { 
    Dialog dialog; 
    switch (id) { 
    case DIALOG_INIT: 
     dialog = new ProgressDialog(this); 
     ((ProgressDialog) dialog).setMessage("Registering with Moish'd! server"); 
     //other dialog setup 
     break; 
    } 
    return dialog; 
} 
+0

主窗口中的onResume尚未擬定兩種。 – Falmarri 2011-01-06 23:20:32