2016-04-11 5 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

Перед началом() вы должны установитьBase(). –

0

Вам нужно сохранить переменную, когда хронограф приостановлен. Что-то вроде этого:

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

А затем, чтобы установить время, когда резюме:

time = timeDifference + SystemClock.elapsedRealtime() 
+0

Но я не пытаюсь полностью сбросить часы. Я просто хочу, чтобы он поднялся туда, где он остановился. Я вызвал chron.setBase (SystemClock.elapsedRealtime()); в функции сброса – user2980816

+0

@ user2980816 Я отредактировал ответ, основанный на вашем комментарии. ;) –