2017-02-02 4 views
1

私は時分秒フォーマットのクロノメーターを実装しようとしています。私が停止を呼び出すと、クロノメーターはまだ時間をカウントし続け、クロノメーターを再び開始するとそれに追加されます。私はまた、クロノメーターをリセットしたくないので、それを再開するだけです。停止を呼び出してもクロノメーターはまだ動作していますか?

これは私のコードです:

作成に:

Chronometer myChronometer; 
long time; 
myChronometer =(Chronometer) findViewById(R.id.chronometer); 
     myChronometer .setOnChronometerTickListener(this); 
     myChronometer .setBase(SystemClock.elapsedRealtime()+time); 

をクロノメーター方法:

@Override 
    public void onChronometerTick(Chronometer cArg) { 
     time = SystemClock.elapsedRealtime() - cArg.getBase(); 

     int h = (int)(time /3600000); 
     int m = (int)(time - h*3600000)/60000; 
     int s= (int)(time - h*3600000- m*60000)/1000 ; 
     String hh = h < 10 ? "0"+h: h+""; 
     String mm = m < 10 ? "0"+m: m+""; 
     String ss = s < 10 ? "0"+s: s+""; 
     cArg.setText(hh+":"+mm+":"+ss); 
    } 

答えて

0

あなたはカウントアップを停止

ドキュメント上で読むことができたよう。これはsetBase(long)から設定されたベースには影響しません。ビューの表示だけです。

クロノメーターのベースをリセットする必要があります。あなたの[スタート]ボタンを実行します。

long timeWhenStopped; 

((Button) findViewById(R.id.start)).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     myChronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped); 
     myChronometer.start(); 
    } 
}); 

((Button) findViewById(R.id.stop)).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     myChronometer.stop(); 
     timeWhenStopped = myChronometer.getBase() - SystemClock.elapsedRealtime(); 
    } 
}); 

 ((Button) findViewById(R.id.start)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //THIS RESET YOUR CHRONOMETER BASE 
       myChronometer.setBase(SystemClock.elapsedRealtime()); 
       myChronometer.start(); 
      } 
     }); 

あなたはeはあなたが一時停止をクリックしてからの経過時間を追跡する必要があり、その後、起動時に正しいベースを設定し、あなたのクロノメーターを再開一時停止したい場合

+0

これを行うとリセットされます。私はクロノをリセットしたくないのですが – BlueDaBaDee

+0

あなたの2回目の編集は便利でした.ChromometerTickを更新した自分の時間変数に頼っていました。私のタイマーもゼロからカウントアップしてからあなたの時間のために多くのありがとう、いい日があります:) – BlueDaBaDee

関連する問題