我正在創建視頻錄製應用程序,並使用標籤txtStatus
和txtTime
覆蓋了視頻預覽。使用計時器更新GUI:爲什麼它不起作用?
相機按鈕啓動/停止,其週期性地調用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()
方法和計時器方法中調用時不工作)。
我試過使用txtTimer.refreshDrawableState();但它不起作用。 – 2009-06-12 13:52:57