有一個關於CountDownTimer的問題。我必須製作一個應用程序,允許用戶每按一下按鈕,時間就會增加1。然後在按鈕停止點擊後等待三秒鐘,然後開始倒計時。遞增countDownTimer Android
我在下面粘貼了我的代碼。
我的問題是:我似乎無法得到增量的數字工作正常,但似乎停止遞增數字(onStop())後,它直接進入(onFinish())。而不是去OnTick(),每秒鐘減少1。我已經嘗試了很多方法來解決這個問題,但一直在卡住。
任何人都可以帶領我在正確的方向做什麼?任何幫助,將不勝感激。感謝你們!
public class MainActivity extends Activity {
Button incrementTime, startTime;
public TextView timedisplay;
public myTimer wavetimer;
private long millisInFuture;
private long millisUntilFinished;
private long countDownInterval;
private long onclicktime;
//private WaveInterface model;
public int countdown;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
incrementTime = (Button) findViewById(R.id.button2);
startTime = (Button) findViewById(R.id.button3);
incrementTime.setText("Increment Time");
startTime.setText("Start");
timedisplay = (TextView) findViewById(R.id.mycounter);
timedisplay.setText("Time Left: " + millisUntilFinished);
wavetimer = new myTimer (millisInFuture, 1000);
incrementTime.setOnClickListener(new OnClickListener(){
int countdown = 01;
/**
* On click button Listner
* @return
*/
public void onClick(View v) {
millisInFuture++;
return;
}
});
startTime.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
wavetimer.start();
}
});}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class myTimer extends CountDownTimer {
public long millisInFuture;
private long countDownInterval;
public myTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
millisUntilFinished--;
if (millisUntilFinished == 0){
wavetimer.onFinish();
}
else {
timedisplay.setText("Time Left: " + millisUntilFinished/1000);
}
}
@Override
public void onFinish() {
timedisplay.setText("Countdown Finished");
wavetimer.cancel();
}
public void onStop() {
millisInFuture = millisInFuture + 1;
timedisplay.setText("Time Left: " + millisInFuture);
}
我似乎無法弄清楚如何正確增加數字。我嘗試了多種方式,並且一直在搞砸。不知道去哪裏看。任何幫助,將不勝感激。感謝你們!
你在做什麼onStop? – njzk2
如果您想在incrementTime最後一次點擊後等待3秒,您需要一個處理程序和一個sendMessageDelayed以及一個removeMessage – njzk2
對不起,我有onStop開頭。我應該更清楚。我試圖讓它更簡單一些,然後再實施onStop。我只是無法超越實際使時間增量然後減少的部分。您在此處發佈的 – Bob