2016-04-11 15 views
-1

ストップボタンを押すと、表示されなくなりますが、バックグラウンドで時間が増えます。私がスタートを押すと、それは停止された時間全体を表示します。誰でも止めを止める方法を知っていますか?クロノメーターストップウォッチ:ストップを押しても時間がバックグラウンドで増加し続ける

import android.app.Fragment; 
import android.os.Bundle; 
import android.os.SystemClock; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.Chronometer; 

public class StopwatchFragment extends Fragment implements OnClickListener { 


    public StopwatchFragment() { 
     // Required empty public constructor 
    } 


    Button startChron; 
    Button stopChron; 
    Button resetChron; 
    private Chronometer chron; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_stopwatch_main, container, false); 
     getActivity().getActionBar() 
       .setTitle("Stopwatch"); 
     startChron = (Button)v.findViewById(R.id.start); 
       startChron.setOnClickListener(this); 
     stopChron = (Button)v.findViewById(R.id.stop); 
       stopChron.setOnClickListener(this); 
     resetChron = (Button)v.findViewById(R.id.reset); 
       resetChron.setOnClickListener(this); 
     chron = (Chronometer) v.findViewById(R.id.chronometer); 
     return v; 


    } 

    @Override 
    public void onClick(View v) { 
     if (v == startChron){ 
      chron.start(); 
     } 
     else if (v == stopChron){ 
      chron.stop(); 
     } 
     else if (v == resetChron){ 
      chron.setBase(SystemClock.elapsedRealtime()); 
     } 
    } 
} 
+0

「しかし、まだバックグラウンドでインクリメントを」 - どのようにあなたがそれを知っていますか? –

+0

@ShadabAnsari私は5秒に開始し、私は停止を押すと私はそれを3秒間停止したままにして開始を言う。スタートを押すと、タイマーは自動的に8秒に更新されます。 – user2980816

答えて

0

stop()を呼び出すとsetBase()を使用してセットとしてごChronometerベースを変更していないからです。 Chronometerを新たに開始する場合は、start()に電話するたびにsetBase()が必要です。

chron.setBase(SystemClock.elapsedRealtime()); 

チェックthis

+0

しかし、私は時計を完全にリセットしようとしていません。私はちょうどそれが途絶えたところでピックアップしたい。私はchron.setBase(SystemClock.elapsedRealtime())を呼び出しました。リセット関数 – user2980816

+0

start()の前にsetBase()を設定する必要があります。 –

0

chronoが一時停止している時間を変数に保存する必要があります。このような何か:

difference = chron.getBase() - SystemClock.elapsedRealtime(); 

そして、再開時間を設定するには:

time = timeDifference + SystemClock.elapsedRealtime() 
+0

しかし、私は時計を完全にリセットしようとしていません。私はちょうどそれが途絶えたところでピックアップしたい。私はchron.setBase(SystemClock.elapsedRealtime())を呼び出しました。リセット機能で – user2980816

+0

@ user2980816あなたのコメントに基づいて答えを編集しました。 ;) –

関連する問題