Таймер хронометра не останавливается - PullRequest
0 голосов
/ 08 октября 2018

У меня есть таймер хронометра для фрагмента, и я хочу, чтобы он сбрасывался до 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.

Это потому, что он находится внутри фрагмента?

Кто-нибудь может мне помочь с этим?Спасибо.

...