天文计时器没有停止

时间:2018-10-08 09:18:22

标签: android android-fragments stopwatch chronometer

我在一个片段上有一个计时器,我希望它重置为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方法后将继续计数。

是因为它在碎片中吗?

有人可以帮我吗?谢谢。

0 个答案:

没有答案