Я создаю приложение для записи видео и наложил предварительный просмотр видео с метками txtStatus
и txtTime
.
Кнопка камеры запускает / останавливает таймер, который периодически вызывает метод UpdateGUI
. Запустив отладку, я вижу, что таймер работает - он вызывает метод updateGUI
каждую секунду, но метод не обновляет элементы управления.
Я был бы очень признателен, если бы мог получить подсказку о том, как решить эту проблему.
Вот код:
Это метод, который активирует таймер:
private void startTimer()
{
updateTimer = new Timer("TimerUpdate");
updateTimer.scheduleAtFixedRate(new TimerTask(){
public void run(){
settings.IncreaseRecordingTime();
updateGUI();
}
}, 0, 1000);
}
Это метод updateGUI:
private void updateGUI()
{
setStatusLabel();
String strTime = settings.GetTimerString(); //strTime changes every second (it works as expected)
txtTimer.setText(strTime);//the text doesn't change!
}
И этот метод вызывается при нажатии кнопки:
private boolean onCaptureButton()
{
settings.CaptureAction();
videoPreview.setFrameCallback(settings);
updateGUI();//here the function updateGUI() works as expected - it changes the txtStatus text from "Preview" to "Recording"
setTimer();
return false;
}
Я также добавил несколько комментариев (не знаю, почему updateGUI()
работает, когда он вызывается в методе onCaptureButton()
, и не работает, когда вызывается внутри метода timer).