У меня есть таймер хронометра для фрагмента, и я хочу, чтобы он сбрасывался до 00:00 и останавливался при нажатии кнопки.
Вот код фрагмента:
public class FirstFragment extends Fragment {
Chronometer chronometer;
@Overried
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_memo, container, false);
Button testButton = view.findViewById(R.id.btn_test);
chronometer = view.findViewById(R.id.stop_watch);
chronometer.setFormat("%s");
testButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
stopStopWatch();
((BottomNavigationView) getActivity().findViewById(R.id.bottom_navigation))
.setSelectedItemId(R.id.nav_second_fragment);
}
});
}
}
И я создал класс StopWatchHelper (спасибо @Mushahid)
public class StopWatchHelper {
@Nullable
private static Long startTime;
@Nullable
public Long getStartTime() {
return startTime;
}
public void setStartTime(final long startTime) {
this.startTime = startTime;
}
}
И вот мои методы запуска и остановки для хронометра:
private void startStopWatch() {
StopWatchHelper stopWatchHelper = new StopWatchHelper();
if (stopWatchHelper.getStartTime() == null) {
long startTime = SystemClock.elapsedRealtime();
stopWatchHelper.setStartTime(startTime);
chronometer.setBase(startTime);
} else {
chronometer.setBase(stopWatchHelper.getStartTime());
}
chronometer.start();
}
private void stopStopWatch() {
StopWatchHelper stopWatchHelper = new StopWatchHelper();
long startTime = SystemClock.elapsedRealtime();
stopWatchHelper.setStartTime(startTime);
chronometer.setBase(startTime);
chronometer.stop();
}
Итак, проблема в том, чтотаймер никогда не останавливается, даже если я вызываю метод stopStopWatch ().
Он определенно имеет chronometer.stop ();внутри него, но почему это происходит?
Таймер сбрасывается на 00:00 правильно, но он продолжает отсчитываться после вызова метода stop.
Это потому, что он находится внутри фрагмента?
Кто-нибудь может мне помочь с этим?Спасибо.