2011-06-10 78 views
6

我編寫了一個程序支持下載文件。在此下載活動中,我啓動一個進度條,然後運行一個線程來執行下載操作。該線程向UI線程發送消息以通知有多少次被頻繁下載。在主(UI)線程中,我在收到消息時更新進度條顯示。如果在下載過程中發生任何問題,它將發送另一條消息。當主線程收到消息時,它會停止進度條並彈出一個新的AlertDialog以顯示錯誤原因。當活動回到前景時,AlertDialog不可見

這是一個特殊的測試。下載時,將程序切換到設置。關閉WIFI/GPRS關閉網絡。

當我回到我的程序,它應該顯示後臺的用戶界面和彈出AlertDialog顯示,因爲我希望的原因。但它只顯示背景UI(這意味着主要活動)和背光的半光,就像彈出式窗口仍在那裏一樣。當我第一次按下時,除了背光明亮之外,沒有任何反應,就像我關閉了一個彈出窗口。

我想,也許這是因爲當我開始我的AlertDialog活動是不是在前臺。

我試着使用:

ActivityManager am = (ActivityManager)Update.this.getSystemService(Context.ACTIVITY_SERVICE); 
ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 

判斷頂部活動是否是我的。但我想展示對話。如果活動沒有被用戶看到,當他回到我的活動時,我希望它顯示對話框。

+0

創建AlertDialog.Builder時使用哪種上下文? – areyling 2011-06-10 09:51:05

+0

我有同樣的問題。你解決了嗎? – Jim 2011-09-27 12:59:28

+0

我用烤麪包代替。 :( – Fakebear 2012-02-08 07:13:03

回答

3

事實上,對話框已經顯示,但用戶不可見,如果旋轉設備,它將變得可見。

似乎有一個刷新/繪圖問題,如果駁回進度對話框,並立即顯示出另一個新的對話框,當活動是不是在前臺。 在我的測試過程中,如果等待完成進度對話框的解除操作,然後顯示新的對話框,則不會發生此類問題。

那麼一個解決方案是,首先顯示AlertDialog,然後解僱ProgressDialog。這對我的應用程序有效。

+0

這對我有用!謝謝,哥們兒:) – Angelo 2012-11-22 13:40:55

0

我認爲,存在Dialog錯誤的一些國王。我有同樣的情況,只有解決方案是通過dialogDismiss(id)解僱對話框並再次顯示showDialog(id)