在Android中单击按钮后,更改按钮的文本

时间:2012-02-07 05:29:09

标签: android button

我想在几秒钟之后更改按钮的文本,比如5秒。

假设在开始时您在活动上有一个按钮,文字“?”, 当你点击这个按钮时,它应该从0-10的范围内取一个数字, 在按钮上显示一个数字作为文本后,它应该再次变为“?” 5秒后。

我尝试过Thread.sleep()但它没有用。

由于

4 个答案:

答案 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); 
    }
}