作者Dacool (大褲)
看板java
標題[問題] 在Android用Timer去執行Button的Click
時間Mon Oct 5 16:29:45 2009
爬過文發現也是有過這樣的問題,只是不是Android的,所以po了一篇文章來發問
舉個問題的例子
Button btn;
TimerTask task1;
btn.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
/*DoSomething*/
}
});
TimerTask task1 = new TimerTask() {
public void run() {
/*btn的Click*/
}
};
我要如何在task1中去call到btn的Click
也就是把按按鈕的事件以Timer觸發
補充一下,其實是因為該method中有一行程式用Button觸發的方式就可以正常執行
但只要用Timer的方式怎麼樣都會執行到該行程式就跳出去
所以才會想說用Timer去執行Button的觸發事件。
以下是跳出去的範例
TimerTask task1 = new TimerTask() {
public void run() {
程式1;
Log.i("Test","1");
程式2;
Log.i("Test","2");
}
};
那我在看Log的時候只會印出
1
1
1
1
.
.
.
.
但若用Button觸發的話,是正常的
1
2
1
2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.77.46.191
※ 編輯: Dacool 來自: 203.77.46.191 (10/05 16:34)
1F:推 PsMonkey:你把 DoSomething 抽成 method,然後 run() 呼叫就好啦 10/05 16:38
※ 編輯: Dacool 來自: 203.77.46.191 (10/05 16:43)
2F:推 PsMonkey:當然,你要研究 fire event 的方法當然是比較厲害一點 10/05 16:41
3F:→ PsMonkey:ㄜ... 我不確定 Andriod 是不是這個詞,不過應該差不多 10/05 16:41
4F:→ PsMonkey:你要解釋一下什麼叫做「跳出去」 ==" 10/05 16:49
※ 編輯: Dacool 來自: 203.77.46.191 (10/05 16:55)
※ 編輯: Dacool 來自: 203.77.46.191 (10/05 16:56)
※ 編輯: Dacool 來自: 203.77.46.191 (10/05 16:57)
5F:→ PsMonkey:==.==== 你也講一下你 Button觸發的地方怎麼寫的吧? 10/05 17:12
6F:→ PsMonkey:說不定兩邊執行的內容根本不一樣... [攤手] 10/05 17:13
7F:→ Dacool:是一模一樣的,因為寫出來又是一大段程式要解釋所以就沒貼 10/05 23:36
8F:→ Dacool:但已經找到方法解決了,原來是Timer不會去更新UI。 10/05 23:37
9F:→ Dacool:謝謝你的回應 10/05 23:39