gpt4 book ai didi

android - Chronometer 节省 fragment 更改时间

转载 作者:行者123 更新时间:2023-11-29 23:30:52 29 4
gpt4 key购买 nike

所以我的应用有 1 个 Activity 和 4 个 fragment ,其中一个有 Chronometer 来显示经过了多少时间。

它工作正常,但我有一个问题,每次我移动到另一个 fragment 并返回时,计时器总是回到 00:00。

我知道这是因为我的 startStopWatch() 方法在 OnCreateView 中,但是有什么方法可以让它从停止的地方继续吗?

是否可以使用 Bundle 类来解决这个问题?如果是,怎么办?

这是我的 Chronometer 代码,所有代码都在一个 fragment 中:

public class FirstFragment extends Fragment {
Chrhonometer chronometer;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_memo, container, false);
chronometer = view.findViewById(R.id.stop_watch);
chronometer.setFormat("%s");
chronometer.setBase(SystemClock.elapsedRealtime());
startStopWatch();
}
}

和方法:

private void startStopWatch() {

if (chronometer.getBase() != 0) {

chronometer.setBase(SystemClock.elapsedRealtime());

} else {

chronometer.setBase(chronometer.getBase() + SystemClock.elapsedRealtime());

}

chronometer.start();

}

private void stopStopWatch() {

chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.stop();

}

提前致谢。

最佳答案

试试这个方法

    public class FirstFragment extends Fragment {
Chrhonometer chronometer;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_memo, container, false);
chronometer = view.findViewById(R.id.stop_watch);
ChronometerHelper chronometerHelper = new ChronometerHelper();
startStopWatch();
}

private void startStopWatch() {
if (chronometerHelper.getStartTime() == null) {
// If the start date is not defined, set it.
long startTime = SystemClock.elapsedRealtime();
chronometerHelper.setStartTime(startTime);
chronometer.setBase(startTime);
} else {
// Otherwise set the chronometer's base to the original
// starting time.
chronometer.setBase(chronometerHelper.getStartTime());

}

chronometer.start();

}

private void stopStopWatch() {

long startTime = SystemClock.elapsedRealtime();
chronometerHelper.setStartTime(startTime);
chronometer.setBase(startTime);
chronometer.stop();

}

}

创建一个 ChronometerHelper 类,您将在其中保存开始时间。

    public class ChronometerHelper {

@Nullable
private static Long mStartTime;

@Nullable
public Long getStartTime() {
return mStartTime;
}

public void setStartTime(final long startTime) {
this.mStartTime = startTime;
}
}

关于android - Chronometer 节省 fragment 更改时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52696974/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com