Android:从活动开始,而不是从点击按钮开始计时
我有一个计时器,我希望它从用户点击按钮开始计数,而不是从活动开始。当前,当用户单击按钮从0开始计时时,它只显示活动开始的时间。以下是相关代码:Android:从活动开始,而不是从点击按钮开始计时,android,Android,我有一个计时器,我希望它从用户点击按钮开始计数,而不是从活动开始。当前,当用户单击按钮从0开始计时时,它只显示活动开始的时间。以下是相关代码: @Override public void onClick(View v) { switch (v.getId()) { case R.id.startTimer: { Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startTimer: {
Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
startTime = SystemClock.elapsedRealtime();
timer = (TextView) findViewById(R.id.timerText);
stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer arg0) {
countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60)));
timer.setText(asText);
}
});
stopWatch.start();
break;
}
...
我需要更改什么?不确定arg0.getBase是什么,但我认为您需要更改-- 到 因为startTime是单击按钮的时间。您可以添加
stopWatch.setBase(startTime);
就在下面
startTime = SystemClock.elapsedRealtime();
因此,您的更新代码将类似于
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startTimer: {
Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
startTime = SystemClock.elapsedRealtime();
// this line to be added to the code
stopWatch.setBase(startTime);
timer = (TextView) findViewById(R.id.timerText);
stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer arg0) {
countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60)));
timer.setText(asText);
}
});
stopWatch.start();
break;
}
...
希望这有帮助。代码来自在线,因为我试图找出如何执行“计数”计时器,并且它可以从中工作(没有case、onclick等)。我试图调整它,使其仅在单击按钮时运行。我现在正在测试。。。
startTime = SystemClock.elapsedRealtime();
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startTimer: {
Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
startTime = SystemClock.elapsedRealtime();
// this line to be added to the code
stopWatch.setBase(startTime);
timer = (TextView) findViewById(R.id.timerText);
stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer arg0) {
countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60)));
timer.setText(asText);
}
});
stopWatch.start();
break;
}
...