我对CountDownTimer有疑问。我必须创建一个应用程序,允许用户每次单击按钮时将时间时间增加+1。然后在按钮停止点击后等待三秒钟,然后开始倒计时。
我在下面粘贴了我的代码。
我的问题是:我似乎无法使数字的递增正常工作,但似乎在我停止递增数字(onStop())之后,它直接转到(onFinish())。而不是去OnTick()并将数字每秒减少1。我已经尝试了很多方法来解决这个问题,但一直困扰着。
任何人都可以带领我朝着正确的方向前进吗?任何帮助,将不胜感激。谢谢你们!
@SuppressWarnings("unused")
public class MainActivity extends Activity {
public int countdown;
Button stoptime;
public TextView timedisplay;
public Timer wavetimer;
private long millisInFuture;
private long countDownInterval;
private long onclicktime;
private long finished;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
countdown = 01;
stoptime = (Button) findViewById(R.id.button2);
stoptime.setText("Stop Timer");
timedisplay = (TextView) findViewById(R.id.mycounter);
timedisplay.setText("0");
wavetimer = new Timer (millisInFuture, 1000);
finished = 0;
stoptime.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
wavetimer.onStop();
//try{
// Thread.sleep(3000);
// wavetimer.start();
//} catch (InterruptedException e) {
// e.printStackTrace();
// }
//wavetimer.onTick(millisInFuture);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class Timer extends CountDownTimer {
public long millisInFuture;
private long countDownInterval = 1000;
private long currentelapsed;
private long methodlimit;
private long lapsedperiod;
public Timer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
if (millisInFuture == 0){
timedisplay.setText("Countdown Finished");
} else {
timedisplay.setText("error");
}
}
public void onStop() {
wavetimer.cancel();
millisInFuture = millisInFuture + 1;
timedisplay.setText("Time Left: " + millisInFuture);
}
public void onTick(long millisUntilFinished) {
millisInFuture = (millisInFuture - 1);
timedisplay.setText("Time Left: " + millisInFuture / 1000);
}
}
}
答案 0 :(得分:0)
将此添加到您的代码中;
wavetimer.start();
:)