2016-04-11 89 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()不會改變你的Chronometer基地使用setBase()集。如果你想使你的Chronometer重新開始,然後每次你打電話start()你才需要setBase()

chron.setBase(SystemClock.elapsedRealtime()); 

檢查this

+0

但我沒有試圖完全重置時鐘。我只是想讓它從中斷的地方回來。我打電話給chron.setBase(SystemClock.elapsedRealtime());在復位功能 – user2980816

+0

你必須在start()之前設置base()。 –

0

你將有一個變量保存時間時計時暫停。事情是這樣的:

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

然後設定時間時,簡歷:

time = timeDifference + SystemClock.elapsedRealtime() 
+0

但我沒有試圖完全重置時鐘。我只是想讓它從中斷的地方回來。我打電話給chron.setBase(SystemClock.elapsedRealtime());在重置功能 – user2980816

+0

@ user2980816我根據您的評論編輯了答案。 ;) –