作者gndelo (狄乐)
看板AndroidDev
标题[问题] 利用Thread无法更新画面
时间Sun Oct 4 23:27:53 2015
因为新学自修
做法可能有些异想天开
还是想请教一下
---------------------------------------------
这是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://webptt.com/cn.aspx?n=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
1F:推 givemepass: Thread内不能更新UI 你要透过Handler去跟MainThread 10/04 23:47
2F:→ givemepass: 去更新UI 10/04 23:48
3F:→ ghostman: handler.post(......) 10/05 15:16
4F:推 PttTime: Thread必须要复写的方法是run()方法 然後启动start() 10/06 21:05
5F:→ PttTime: 像: (new Thread(){public void run(){todo..}}).start() 10/06 21:08
6F:→ y3k: 同楼上 Thread要用.start()去跑 不然一样是跑在主线视为物件 10/06 22:03
7F:→ Msgbox: 用Handler 10/07 23:14