我在一个片段上有一个计时器,我希望它重置为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方法后将继续计数。
是因为它在碎片中吗?
有人可以帮我吗?谢谢。