結果我一搞就搞了一個下午才搞懂。
在SDK範例大全中,看到很多的ProgressDialog都有跟著執行緒做視窗的結束,起先我以為ProgressDialog就是要跟著執行緒了,研究到最後,才發現…其實不用。
仔細看看程式碼,書裡寫的是︰
// 顯示Progress對話方塊
myDialog = ProgressDialog.show
(
要顯示視窗的Context,
標題的文字,
視窗內文,
boolean值
);
new Thread()
{
public void run()
{
try
{
/* 在這裡寫上要背景執行的程式片段 */
/* 為了明顯看見效果,以暫停3秒作為示範 */
sleep(3000);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
myDialog.dismiss(); // 卸載所建立的myDialog物件
}
}
}.start(); //開始執行執行緒
ok,很清楚的知道,書裡在ProgressDialog的實作下,跟了一個Thread,好讓程式能夠在3秒以內完成並結束。但是,Thread這一段就算不寫也沒關係,反正只要用任何方法,讓
myDialog.dismiss();能夠被執行到,視窗自然就會消失,畫面返回主程式了。
小鰻真正在實作時,除了摸索Thread倒底要不要寫這個問題以外,還搞了一個小烏龍。
ProgressDialog本身是能夠接受New出實體的,於是,我在
myDialog = ProgressDialog.show
(
要顯示視窗的Context,
標題的文字,
視窗內文,
boolean值
);
的上面,又加上一段myDialog = new ProgressDialog(this);也難怪我在執行myDialog.dismiss()時,怎麼樣也關不掉視窗!
2 comments:
感謝,對我很有幫助。
感謝,很有用!!
Post a Comment