Начать таймер при нажатии кнопки

Я новичок в программировании на Android, но я знаю Java. Мой вопрос: как работает таймер в Android? Я читал, что лучше использовать обработчик. Я хочу сделать это, вы нажмете кнопку и начнется таймер. К моменту нажатия кнопки все понятно для меня, но как запустить таймер?

Как работает таймер в Android?

Вам лучше прочитать документацию по таймеру, документацию CountDownTimer и документацию обработчика .

На данный момент, когда кнопка нажата, все очищается для меня; Но как я могу запустить таймер?

Если бы я не понял ваш вопрос, когда вы говорите « Timer , вы обращаетесь к CounteDownTimer . Итак, у вас должно быть что-то вроде этого:

(Я написал пример кода. Итак, сначала вы должны это понять, а затем, вы должны применить его к своему коду.)

Добавление Buttons

 btn1 = (Button)findViewById(R.id.bt1); btn2 = (Button)findViewById(R.id.bt2); 

Добавление SetOnClickListener()

 btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { }); } btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { }); } 

Мой btn1 запускает CountDownTimer , а второй останавливается и очищает его.

Теперь я создаю внутренний класс с именем CountDownTimerTest .

 public class CountDownTimerTest extends CountDownTimer { public CountDownTimerTest(long startTime, long interval) { super(startTime, interval); } @Override public void onFinish() { text.setText("Time's up!"); timeElapsedView.setText("Time Elapsed: " + String.valueOf(startTime)); } @Override public void onTick(long millisUntilFinished) { text.setText("Time remain:" + millisUntilFinished); timeElapsed = startTime - millisUntilFinished; timeElapsedView.setText("Time Elapsed: " + String.valueOf(timeElapsed)); } } 

Затем на моем btn1 я помещаю этот код (запустите CountDownTimer ):

 countDownTimer.start(); 

И на моем btn2 я помещаю этот код (остановите / отмените CountDownTimer ):

 countDownTimer.cancel(); 

Теперь я надеюсь, что вы поймете, как работает CountDownTimer , если ваш вопрос не о CountDownTimer , дайте мне знать, и я CountDownTimer свой ответ как можно скорее с вашими пожеланиями.

EDIT – только с одной Button

Чтобы сделать это с помощью той же Button , вы можете сделать это:

Создайте Boolean переменную как:

 Boolean ButtonClicked = false; 

Затем измените код следующим образом:

 btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (!ButtonClicked)) { ButtonClicked = true; countDownTimer.start(); } else { ButtonClicked = false; countDownTimer.cancel(); } }); } 

EDIT 2 Получите, какую кнопку нажать

Вы можете создать int именем NumberButtonClicked следующим образом:

 int NumberButtonClicked = 0; 

Затем на каждой Button вы должны будете сделать это (пример):

 btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { NumberButtonClicked = 1; }); } 

Тогда вы знаете, что если вы нажмете btn1 ваша переменная будет равна 1.