我想停止CountDownTimer并重新启动它,停止时间。我在CountDownTimer类中有这个代码
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;
}
}
和Dialog类,他必须在用户点击按钮'暂停'时显示。 对话框代码,如您所见,我在此代码中启动了新的CountDownTimer
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();
}
和方法,我停止CountDownTimer并显示Dialog窗口。
long stime =dTime.mills;
dTime.cancel();
dTime=null;
dTime= new MyDownTimer(stime,1000);
GameScreen.showWindowPause(dTime);
当我在对话框窗口中单击按钮时,我看到新的Dialog,它在方法
中创建MyDownTimer.onFinish()
但如果我换行
long stime =dTime.mills;
在
long stime =5000;
CountDownTimer重启,一切正常。 哪里弄错了?
答案 0 :(得分:0)
你的问题确实令人困惑,但我认为我找到了一些没有用的东西。
public void onTick(long millisUntilFinished) {
mills=millisUntilFinished/1000;
GameManager.time= millisUntilFinished/1000;
}
我认为应该是
mills=millisUntilFinished - 1000;
编辑:如果您实际上将毫秒转换为秒,那么您需要做
long stime =dTime.mills*1000;