我有一個應用程序,它具有兩個彼此獨立運行的計時器。我有一個計時器在自己的工作正常,但是當我添加第二個我開始得到一個奇怪的錯誤。在一個有兩個定時器的Android程序中,我得到一個奇怪的錯誤,但沒有發現另一個 - 代碼似乎是相同的
該應用程序旨在工作,以便如果按下Jammer計時器旁邊的Start按鈕,它將開始倒計時;如果按下Blocker 1定時器旁邊的Start按鈕,它將開始倒計時。
但是,如果按下Jammer計時器旁邊的按鈕,它將顯示0.如果再次按下相同的按鈕,Blocker 1計時器將開始正確倒計時。如果任何人有任何想法可能會導致此它會非常感激(反向不一樣,如果要攔截器1旁邊的按鈕被按下兩次發生)
public void onClick(View v) {
switch (v.getId()){
case R.id.buttonStartJammer:
toggleTimer(0);
break;
case R.id.buttonStartBlocker1:
toggleTimer(1);
break;
}
}
private void toggleTimer(final int timer){
switch(timer){
case 0:
{
if (jammerTimerRunning) {
jammerTimer.cancel();
bStartJammer.setText(getResources().getString(R.string.start));
} else if (jammerTimerDone){
//stuff
} else {
jammerTimer = newTimer(jammerSeconds, 0);
jammerTimer.start();
jammerTimerRunning = true;
break;
}
}
case 1:
if(blocker1TimerRunning){
blocker1Timer.cancel();
bStartBlocker1.setText(getResources().getString(R.string.start));
} else if (blocker1TimerDone) {
//stuff
} else {
blocker1Timer = newTimer(blocker1Seconds, 1);
blocker1Timer.start();
blocker1TimerRunning = true;
break;
}
}
private CountDownTimer newTimer(long seconds, final int timer) {
long milliseconds = seconds * 1000;
return new CountDownTimer(milliseconds,1000) {
@Override
public void onFinish() {
switch(timer){
case 0:
{
jammerTimerRunning = false;
jammerTimerDone = true;
tvJammerTimer.setText(String.format("%d",0));
jammerSeconds = 59;
break;
}
case 1:
{
blocker1TimerRunning = false;
blocker1TimerDone = true;
tvBlocker1Timer.setText(String.format("%d",0));
blocker1Seconds = 59;
break;
}
}
}
@Override
public void onTick(long millisUntilFinished) {
switch(timer){
case 0:
{
jammerSeconds = (millisUntilFinished/1000);
tvJammerTimer.setText(String.format("%d",jammerSeconds));
break;
}
case 1:
{
blocker1Seconds = (millisUntilFinished/1000);
tvBlocker1Timer.setText(String.format("%d",blocker1Seconds));
break;
}
}
}
};
}
。
我懷疑的newTimer方法。我會考慮創建單獨的定時器,而不是在一個定時器內進行切換。不過,這可能不是問題。此外,我只是普遍懷疑我寫的任何東西;) – 2012-01-06 01:31:24
我會嘗試,再次感謝您抽出時間幫助 - 我真的很感激它:) – Eilidh 2012-01-06 12:17:38