Как сделать остановку таймера при нажатии

1

Мой таймер остановится, когда он достигнет определенного числа. Вместо этого я хочу, чтобы он остановился нажатием кнопки. Как мне это сделать? Вот как выглядит мой код в настоящее время:

final TextView t1 = (TextView) findViewById(R.id.yourpay);

final Timer t =new Timer();
t.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                    public void run() {
                        money = (PPS+Reserve);
                        Reserve = (money);
                        t1.setText("$" + money); //Place your text data here
                        counter++;

                        //Place your stopping condition over here. Its important to have a stopping condition or it will go in an infinite loop. 
                        if(counter == HPDPS)
                            t.cancel(); 
                    }
            }); 
        }
    }, 1000, 1000);

Если возможно, я бы хотел, чтобы он остановился при нажатии кнопки И, когда счетчик достиг HPDPS.

Теги:
timer

2 ответа

2
Лучший ответ

Вставьте свою кнопку onClickListener():

if (t != null)
    t.cancel();

и удалите условие остановки из таймера.


Пример кода (обновлено):

final TextView t1 = (TextView) findViewById(R.id.yourpay);

final Timer t =new Timer();
t.schedule(new TimerTask() {

    @Override
    public void run() {
        runOnUiThread(new Runnable() {

            public void run() {
                money = (PPS+Reserve);
                Reserve = (money);
                t1.setText("$" + money); //Place your text data here

                // Removed the stopping condition/counter

            }
        }); 
    }
}, 1000, 1000); // Do you really want to wait 1 second before executing the timer code?  If not, change the 1st "1000" to a "0"


final Button b = (Button) findViewById(R.id.my_button_id); // Replace with your button id
b.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (t != null)
            t.cancel();
        }
});
  • 0
    не могли бы вы показать мне пример, на котором я мог бы построить? Как я сказал, я действительно новичок в этом, так что я не знаю, как отформатировать onClickListener
  • 0
    Там обновленный пример кода. Попробуйте это.
Показать ещё 1 комментарий
0

Используйте CountDownTimer. Когда кнопка нажата, просто остановите таймер.

Но за то, что вы только что сделали, и создайте кнопку, установите OnClickListener на кнопку, а затем вызовите timer.cancel() или что-то, что остановит ее внутри метода onClick() вашего слушателя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню