我有一个片段的天文钟定时器,我希望它重新设置为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正常,但它保持计数停止方法被调用后。
是不是因为它是一个片段里面?
谁能帮我这个? 谢谢。