[問題] 利用Thread無法更新畫面

看板AndroidDev作者 (狄樂)時間8年前 (2015/10/04 23:28), 8年前編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/1
因為新學自修 做法可能有些異想天開 還是想請教一下 --------------------------------------------- 這是UI:http://goo.gl/fcS07F 主程式類別是使用Fragment建立的 然後在main方法之外自訂了一個繼承Thread的類別如下 class MaxThread extends Thread { protected int mx, yr; protected String mit, mxt, yrt; protected TextView txtmi, txtmx, txtyr; public void run(int maxc, int yourc, String mint, String maxt, String yourt, TextView txtmin, TextView txtmax, TextView txtyour){ mx = maxc; yr = yourc; mit = mint; mxt = maxt; yrt = yourt; txtmi = txtmin; txtmx = txtmax; txtyr = txtyour; try { for (int i = mx; i >= yr; i--){ mxt = String.valueOf(i); txtmi.setText(mit); txtmx.setText(mxt); Thread.sleep(1000); } } catch (InterruptedException e) {} } } public class GameFragment extends Fragment { ......省略其他程式碼...... MaxThread work = new MaxThread(); work.run(maxcode, yourcode, min, max, yournum, mtxtmin, mtxtmax, mtxtyour); 我想達成的效果是當使用者沒猜中時 最大值會依序每秒減1並且顯示 但測試的結果系統的確會依應該等待的時間暫停 卻沒有每秒執行txtmi.setText(mit);txtmx.setText(mxt);的部分 直到時間結束才會顯示最後的值 不曉得是哪裡錯誤呢? -- 聽別人說施比受更有福 我倒認為吃比瘦更有福 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.211.162 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1443972485.A.478.html ※ 編輯: gndelo (114.25.211.162), 10/04/2015 23:31:21 ※ 編輯: gndelo (114.25.211.162), 10/04/2015 23:32:14

10/04 23:47, , 1F
Thread內不能更新UI 你要透過Handler去跟MainThread
10/04 23:47, 1F

10/04 23:48, , 2F
去更新UI
10/04 23:48, 2F

10/05 15:16, , 3F
handler.post(......)
10/05 15:16, 3F

10/06 21:05, , 4F
Thread必須要複寫的方法是run()方法 然後啟動start()
10/06 21:05, 4F

10/06 21:08, , 5F
像: (new Thread(){public void run(){todo..}}).start()
10/06 21:08, 5F

10/06 22:03, , 6F
同樓上 Thread要用.start()去跑 不然一樣是跑在主線視為物件
10/06 22:03, 6F

10/07 23:14, , 7F
用Handler
10/07 23:14, 7F
文章代碼(AID): #1M4KM5Hu (AndroidDev)