问题描述
我定义了一个倒计时器,代码如下。有两个界面,当点第一个界面(front)的Next键时进入倒计时界面(FixTime)点击"开始"倒计时,但当我点击"后退"回到第一个界面,再点击Next回来时,没有接着上次的计时,而是恢复了最初的状态。哪位大师在我写的代码的基础上修改一下,让它能继续计时,不胜感激。front.javapackagecom.example.fixtime2;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassfrontextendsActivity{privateButtonbutton_next;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.front);button_next=(Button)this.findViewById(R.id.next);button_next.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(front.this,FixTime.class);startActivity(intent);front.this.finish();}});}}FixTime.javapackagecom.example.fixtime2;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importcom.example.fixtime2.AdvancedCountdownTimer;//////两个Activity之间的联系!!!importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.SeekBar;importandroid.widget.TextView;importandroid.widget.Button;publicclassFixTimeextendsActivityimplementsOnClickListener{privateTextViewtxt_time=null;//显示剩余时间privateButtonbtn_start=null;//各个按钮privateButtonbtn_pause=null;privateButtonbtn_con=null;privateButtonbtn_reset=null;privateButtonbtn_exit=null;privatelonghour=0;//时间变量privatelongminute=0;privatelongsecond=0;privatelongtime=0;privateMyCountcount=null;//定时类对象在下面代码中有定义class——MyCount。Viewv1;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);v1=getLayoutInflater().inflate(R.layout.fixtime,null);setContentView(v1);findViews();setListener();hour=Long.parseLong("0");minute=Long.parseLong("30");second=Long.parseLong("0");time=(hour*3600+minute*60+second)*1000;//因为以ms为单位,所以乘以1000.count=newMyCount(time,1000);}//识别各个控件并设置按钮状态privatevoidfindViews(){txt_time=(TextView)findViewById(R.id.text);btn_start=(Button)findViewById(R.id.start);btn_pause=(Button)findViewById(R.id.pause);btn_con=(Button)findViewById(R.id.con);btn_reset=(Button)findViewById(R.id.reset);btn_exit=(Button)findViewById(R.id.exit);btn_pause.setEnabled(false);btn_con.setEnabled(false);}//绑定Button监听器privatevoidsetListener(){btn_start.setOnClickListener(this);btn_pause.setOnClickListener(this);btn_con.setOnClickListener(this);btn_reset.setOnClickListener(this);btn_exit.setOnClickListener(this);}//设置监听器@OverridepublicvoidonClick(Viewv){switch(v.getId())//获取按键的ID值!!!!!!{//点击开始计时按钮caseR.id.start:count.start();//开始计时!!!!!!!!!!btn_start.setEnabled(false);btn_pause.setEnabled(true);break;//点击重置按钮caseR.id.reset:count.cancel();//取消及时,重置界面状态txt_time.setText("剩余时间:0");btn_pause.setEnabled(false);btn_con.setEnabled(false);btn_start.setEnabled(true);break;//点击退出按钮caseR.id.exit:Intentintent=newIntent(FixTime.this,front.class);startActivity(intent);break;default:break;}}//实现计时功能的类classMyCountextendsAdvancedCountdownTimer{publicMyCount(longmillisInFuture,longcountDownInterval){//这两个参数在AdvancedCountdownTimer.java中均有(在“构造函数”中).super(millisInFuture,countDownInterval);}@OverridepublicvoidonFinish(){txt_time.setText("剩余时间0:0:0");}//更新剩余时间@OverridepublicvoidonTick(longmillisUntilFinished,intpercent){longmyhour=(millisUntilFinished/1000)/3600;longmyminute=((millisUntilFinished/1000)-myhour*3600)/60;longmysecond=millisUntilFinished/1000-myhour*3600-myminute*60;txt_time.setText("剩余时间"+myhour+":"+myminute+":"+mysecond);}}}AdvancedCountDown.javapackagecom.example.fixtime2;importandroid.os.Handler;importandroid.os.Message;publicabstractclassAdvancedCountdownTimer{privatestaticfinalintMSG_RUN=1;privatefinallongmCountdownInterval;//定时间隔,以毫秒计privatelongmTotalTime;//定时时间privatelongmRemainTime;//剩余时间//构造函数publicAdvancedCountdownTimer(longmillisInFuture,longcountDownInterval){mTotalTime=millisInFuture;mCountdownInterval=countDownInterval;mRemainTime=millisInFuture;}//取消计时publicfinalvoidcancel(){mHandler.removeMessages(MSG_RUN);}//重新开始计时publicfinalvoidresume(){mHandler.sendMessageAtFrontOfQueue(mHandler.obtainMessage(MSG_RUN));}//暂停计时publicfinalvoidpause(){mHandler.removeMessages(MSG_RUN);}//开始计时publicsynchronizedfinalAdvancedCountdownTimerstart(){if(mRemainTime<=0){//计时结束后返回onFinish();returnthis;}//设置计时间隔mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RUN),mCountdownInterval);returnthis;}publicabstractvoidonTick(longmillisUntilFinished,intpercent);//计时中publicabstractvoidonFinish();//计时结束//通过handler更新androidUI,显示定时时间privateHandlermHandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){synchronized(AdvancedCountdownTimer.this){if(msg.what==MSG_RUN){mRemainTime=mRemainTime-mCountdownInterval;if(mRemainTime<=0){onFinish();}elseif(mRemainTime<mCountdownInterval){sendMessageDelayed(obtainMessage(MSG_RUN),mRemainTime);}else{onTick(mRemainTime,newLong(100*(mTotalTime-mRemainTime)/mTotalTime).intValue());sendMessageDelayed(obtainMessage(MSG_RUN),mCountdownInterval);}}}}};}