Java 当重新启动倒计时时,它完成工作
我想停止倒计时并重新启动它,直到它停止。我有这个代码在课堂倒计时Java 当重新启动倒计时时,它完成工作,java,android,countdowntimer,Java,Android,Countdowntimer,我想停止倒计时并重新启动它,直到它停止。我有这个代码在课堂倒计时 public class MyDownTimer extends CountDownTimer{ long mills; public MyDownTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); this.mills=millisInFuture; } @Overrid
public class MyDownTimer extends CountDownTimer{
long mills;
public MyDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.mills=millisInFuture;
}
@Override
public void onFinish() {
GameScreen.showWindow("Time is over","Sorry, time is Over, you lose");
}
@Override
public void onTick(long millisUntilFinished) {
mills=millisUntilFinished/1000;
GameManager.time= millisUntilFinished/1000;
}
}
和对话框类,他必须显示,当用户点击按钮'暂停'。
对话框代码,如您所见,我在这段代码中启动了新的倒计时
public static void showWindowPause(final MyDownTimer dTime){
final Dialog wdialog= new Dialog(context);
wdialog.setContentView(R.layout.dialog_window);
wdialog.setTitle("title");
TextView text=(TextView)wdialog.findViewById(R.id.txtFirstWord);
text.setText("mainText");
Button dialogButton=(Button)wdialog.findViewById(R.id.button1);
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
wdialog.dismiss();
dTime.start();
}
});
wdialog.show();
}
和方法,其中我停止倒计时并显示对话框窗口
long stime =dTime.mills;
dTime.cancel();
dTime=null;
dTime= new MyDownTimer(stime,1000);
GameScreen.showWindowPause(dTime);
当我单击对话框窗口中的按钮时,我会看到在方法中创建的新对话框
MyDownTimer.onFinish()
但如果我换线
long stime =dTime.mills;
在
倒计时重新启动,一切正常。
我哪里出错了?你的问题真让人困惑,但我想我发现了一些没有意义的东西
public void onTick(long millisUntilFinished) {
mills=millisUntilFinished/1000;
GameManager.time= millisUntilFinished/1000;
}
我想应该是这样
mills=millisUntilFinished - 1000;
编辑:如果你真的要把millseconds转换成秒,那么你需要这样做
long stime =dTime.mills*1000;
我想在计时器和显示对话框中暂停。我像这样创建断点
longsime=dTime.mills编码>并创建新的MyDownTimer,当关闭窗口对话框时,显示在onFinish()
中创建的新对话框窗口代码>-好的。不,我把毫秒转换成毫秒。并将其设置为-millisuntiltfinished/1000。
编辑了我的答案,如果您在我看不见的地方实际使用dTime.mills,那么当您将dTime.mills指定给“stime”时,您需要将其乘以1000
long stime =dTime.mills*1000;