在我的應用程序中,我想每3秒更改一次按鈕文本。如何在Android中每3秒動態更改按鈕文本?
-3
A
回答
4
設置一個Timer以每3秒運行一次TimerTask。 TimerTask只需調用按鈕的setText方法即可更改按鈕的文本。您必須在UI線程中執行此操作,因此您應該使用後來運行Runnable對象,該對象將執行更新爲正確的線程。
例如,在下面的活動中,字母「A」被添加到該按鈕的文本每三秒鐘:
public class ButtonTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button subject = new Button(this);
subject.setLayoutParams((new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT)));
subject.setText("A");
setContentView(subject);
Timer timing = new Timer();
timing.schedule(new Updater(subject), 3000, 3000);
}
private static class Updater extends TimerTask {
private final Button subject;
public Updater(Button subject) {
this.subject = subject;
}
@Override
public void run() {
subject.post(new Runnable() {
public void run() {
subject.setText(subject.getText() + "A");
}
});
}
}
}
0
使用AsyncTask
你可以做這樣的事情更新Button
名爲Button1
private class UpdateButton extends AsyncTask<Void, String, Void> {
@Override
protected Void doInBackground(Void... params) {
int i = 0;
while (true) {
publishProgress("" + i++);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
return (Void)null;
}
}
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
button1.setText(values[0]);
}
}
啓動按鈕1更新
(new UpdateButton()).execute((Void)null);
3
看看這個整潔的小例子:http://developer.android.com/resources/articles/timed-ui-updates.html
所有你需要的是一個處理程序和一個任務!在任務中執行您的操作(設置文本)並使用Handler.postDelayed
設置下一個處理程序事件。
但是要記住以下幾點:我會強烈建議您設置在活動的onResume()
方法和第一計時器事件不在其onCreate
方法。另外,刪除(取消)您的處理程序onPause()
!
要理解這個的含義,看看活動的lifecycle。
通過這種方式,您可以防止在您的活動處於後臺並且不可見時發生任何事情!
+1
非常感謝 – deepthi
1
@deepthi:這裏是在特定的時間間隔
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.widget.ImageView;
public class ButtonActivity extends Activity {
private static final long GET_DATA_INTERVAL = 2000;
int images[] = {R.drawable.kanya,R.drawable.kumba};
private String[] textfirst={"nsc","bsc","nasadq","tcs","mds","mac","manipal"};
int index = 0;
ImageView img;
Button btn;
Handler hand = new Handler();
Handler hand1 = new Handler();
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
img = (ImageView) findViewById(R.id.image);
btn = (Button) findViewById(R.id.button1);
hand1.postDelayed(run1, GET_DATA_INTERVAL);
}
Runnable run1 = new Runnable() {
@Override
public void run() {
btn.setText(textfirst[index++]);
if (index == textfirst.length)
index = 0;
hand1.postDelayed(run1, GET_DATA_INTERVAL);
}
};
相關問題
- 1. 如何在Android上動態更改按鈕和文本顏色
- 2. 按下按鈕後每3秒更新JTextFields文本
- 3. 更改按鈕的文本動態
- 4. 更改按鈕文本動態地kivy
- 5. 如何動態更改tkinter中按鈕的文本?
- 6. 我不能在ActionScript 3中更改按鈕內動態文本的內容
- 7. 爲Android動態更改文本操作欄按鈕
- 8. 在Android上更改按鈕文本
- 9. Android更改按鈕的文本顏色2秒
- 10. 如何在android中按下按鈕/文本視圖時更改文本顏色
- 11. 更改DataGridViewButtonColumn的每行按鈕文本
- 12. 在ActionScript 3中如何動態更改文本框的行爲
- 13. 如何在Android的自動點擊一個按鈕,每一秒
- 14. 在AngularJs中動態更改按鈕文本
- 15. 在as3中更改按鈕內的動態文本字段
- 16. 在VB.net(Windows Phone 7)中動態更改按鈕的文本
- 17. 在素材中動態更改按鈕文本-ii
- 18. 如何在回調中更改按鈕的文本? (Android)
- 19. 如何在android中更改Softkeyboard「Enter」按鈕文本?
- 20. 如何在android中點擊一個按鈕來更改文本?
- 21. 如何在Android中使用軟鍵盤更改按鈕文本?
- 22. 我每次按下按鈕時如何更改textView的文本?
- 23. 更改文本中每3秒鐘,淡入淡出效果
- 24. 如何動態更改按鈕
- 25. Android-如何在按下按鈕時更改按鈕的文字?
- 26. 如何更改android動態按鈕的大小android
- 27. 每秒動態更改背景圖像
- 28. 如何更改android背景每個???秒?
- 29. 如何在每次點擊按鈕時更改按鈕的文本值?
- 30. 如何在Android上在運行時更改按鈕的文本?
顯示在按鈕上的文字的細節例如但是你不能沒有一個處理程序更新UI線程。 –
好吧,你從任何時候都從TimerTask中派生出來,所以在你自己的函數中傳遞一個參考 – 2010-02-16 11:21:32
嗨,請提供一些示例代碼給Timmer – deepthi