Измените текст кнопки, через некоторое время, когда вы нажимаете на нее, в Android - PullRequest
0 голосов
/ 07 февраля 2012

Я хочу изменить текст кнопки через несколько секунд, скажем, 5 секунд.

Предположим, что при запуске у вас есть одна кнопка на упражнении с текстом «?», Когда вы нажимаете на эту кнопку, онадолжно взять любое число из диапазона, предположим, 0-10, после отображения одного числа в виде текста на кнопке, оно должно снова измениться на «?»через 5 секунд.

Я пробовал Thread.sleep (), но это не сработало.

Спасибо

Ответы [ 4 ]

6 голосов
/ 07 февраля 2012

использование:

btn.setOnClickListener(new View.OnClickListener(){
    public void onClick(View view)
    {
        btn.setText(""+i);
        Handler.postDelayed(new Runnable()
        {
            public void run()
            {
                 btn.setText("?");
            }
        }, 5000);
    }
}
0 голосов
/ 29 февраля 2012

Вы можете установить таймер при нажатии на кнопку и изменить текст кнопки, как показано ниже:

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); 
    }
}
0 голосов
/ 07 февраля 2012

Вот рабочая производная от кнопки.

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();
    }
}
0 голосов
/ 07 февраля 2012

// объявление на уровне класса

Таймер таймера = ноль;

Handler handler=new Handler() {
    @Override
    public void handleMessage(Message msg) 
    {
                // update UI here i.e. set The value on Text View

    }
};

// вызовите метод startTheTask из Activity, он запустит таймер, который будет работать каждые 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);
          }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...