我想在几秒钟之后更改按钮的文本,比如5秒。
假设在开始时您在活动上有一个按钮,文字“?”, 当你点击这个按钮时,它应该从0-10的范围内取一个数字, 在按钮上显示一个数字作为文本后,它应该再次变为“?” 5秒后。
我尝试过Thread.sleep()但它没有用。
由于
答案 0 :(得分:6)
使用:
btn.setOnClickListener(new View.OnClickListener(){
public void onClick(View view)
{
btn.setText(""+i);
Handler.postDelayed(new Runnable()
{
public void run()
{
btn.setText("?");
}
}, 5000);
}
}
答案 1 :(得分:0)
//班级声明
定时器计时器= null;
Handler handler=new Handler() {
@Override
public void handleMessage(Message msg)
{
// update UI here i.e. set The value on Text View
}
};
//从Activity调用startTheTask方法,它将启动一个定时器,每5秒后工作一次
void startTheTask() {
if(timer != null)
{
timer.cancel();
timer = new Timer();
TimerTask timerTask = new TimerTask()
{
public void run()
{
// your random number code generation here
// to update UI call
handler.sendMessage(handler.obtainMessage());
}
};
timer.schedule(timerTask, 5000);
}
}
答案 2 :(得分:0)
这是一个有效的Button衍生物。
package com.anonymous.sample;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
public class AutoChangeButton extends Button {
private static final int DEFAULT_DELAY = 1000;
private Runnable backToQuestionMark = new Runnable() {
public void run() {
setText("?");
}
};
private void initButton() {
setText("?");
this.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
setText("foo~~");
postDelayed(backToQuestionMark, DEFAULT_DELAY);
}
});
}
public AutoChangeButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initButton();
}
public AutoChangeButton(Context context, AttributeSet attrs) {
super(context, attrs);
initButton();
}
public AutoChangeButton(Context context) {
super(context);
initButton();
}
}
答案 3 :(得分:0)
您可以在单击按钮时设置计时器并更改按钮文本,如下面的代码所示:
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View view)
{
button.setText(sometext);
timer.schedule(new TimerTask()
{
public void run()
{
button.setText(text);
}
}, 0, 3000);
}
}