看板 AndroidDev 關於我們 聯絡資訊
因為新學自修 做法可能有些異想天開 還是想請教一下 --------------------------------------------- 這是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
givemepass: Thread內不能更新UI 你要透過Handler去跟MainThread 10/04 23:47
givemepass: 去更新UI 10/04 23:48
ghostman: handler.post(......) 10/05 15:16
PttTime: Thread必須要複寫的方法是run()方法 然後啟動start() 10/06 21:05
PttTime: 像: (new Thread(){public void run(){todo..}}).start() 10/06 21:08
y3k: 同樓上 Thread要用.start()去跑 不然一樣是跑在主線視為物件 10/06 22:03
Msgbox: 用Handler 10/07 23:14