結果我一搞就搞了一個下午才搞懂。
在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()時,怎麼樣也關不掉視窗!
感謝,對我很有幫助。
ReplyDelete感謝,很有用!!
ReplyDelete