关于android关于计时器Chronometer的问题

藍雁南飛 2010-07-16 07:07:27
刚刚接触关于Chronometer的计时器,我遇到了问题:
本人代码如此:

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.AlertDialog.Builder;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class myapp extends Activity {

private Button start;
private Button stop;
private Button reBase;
private Chronometer timing;
private long timeNow;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
doing();
}

void doing() {
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
reBase = (Button) findViewById(R.id.reBase);
timing = (Chronometer) findViewById(R.id.chronometer);

start.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
timing.setBase(SystemClock.uptimeMillis());
timing.start();
}
});

stop.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
timing.stop();
}
});

reBase.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
timing.setBase(SystemClock.elapsedRealtime());
}
});
}
}


其实就是一个程序,里面有个计时器Chronometer,另外有三个按钮,分别是:开始、停止、重置。
当我开始计时之后,按一下停止按钮(此时计时时刻为0:09),时间显示就停止在0:09;
但是当我在这时再按一次开始按钮,显示的时间竟然突然变成(0:20);

反复试过很多次,都会有这个现象,是不是调用了stop()方法后,事事上还是在计时,只是显示上不变而已,而当再次使用start()时候,事实上还是会继续计时的?

那么请问如何实现计时功能,即有开始、停止、重置功能。

补充,本人使用android2.2.
...全文
1952 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 d449027589 的回复:]

求教各位大侠,Chronometer的计时器停止计时后,如何保存所用时间?
[/Quote]

如果要记时间的话,你直接用java的代码System.currentTimeMillis()直接取系统时间好了。Chronometer其实在实际中,几乎没有太多的用武之地。

通常的做法是,在调用Chronometer的start()方法的同时,调用System.currentTimeMillis(),在调用Chronometer的stop()方法的同时,也调用System.currentTimeMillis(),然后将两者相减即可。
d449027589 2011-05-16
  • 打赏
  • 举报
回复
求教各位大侠,Chronometer的计时器停止计时后,如何保存所用时间?
look_down 2011-05-12
  • 打赏
  • 举报
回复
文档上系的很清楚。

public void setBase (long base)

Since: API Level 1
Set the time that the count-up timer is in reference to.
Parameters
base Use the elapsedRealtime() time base.
pathuang68 2011-05-12
  • 打赏
  • 举报
回复
把doing改成:

void doing() {
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
reBase = (Button) findViewById(R.id.reBase);
timing = (Chronometer) findViewById(R.id.chronometer);

start.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
timing.setBase(SystemClock.elapsedRealtime()); // 改成这样就符合楼主的要求啦
timing.start();
}
});

stop.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
timing.stop();
}
});

reBase.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
timing.setBase(SystemClock.elapsedRealtime());
}
});
pathuang68 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zenglilaile111 的回复:]

setBase()应该如何设置????
[/Quote]

如果你想用setBase将计时器清零的话,可以用下面的语句:

setBase(SystemClock.elapsedRealtime());
zenglilaile111 2011-04-11
  • 打赏
  • 举报
回复
setBase()应该如何设置????
zcatt 2010-09-19
  • 打赏
  • 举报
回复
这个是正常的功能. 通一般电子跑表是一样的, stop只是停止的时间, 但并没有停止计时.
你所期望的功能, 可以使用setBase().
纠结的木棉花 2010-09-02
  • 打赏
  • 举报
回复
我想问一下你的android2.2是如何配置的,需要哪些文件,分别怎么放置?谢谢
希望您能解答
liqi4960710 2010-07-19
  • 打赏
  • 举报
回复
友情帮顶!!!
藍雁南飛 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yihua0001 的回复:]

建议加入LOG信息打印一下,看整个过程是如何调用的。有的按钮按下去和弹起来都要调用函数的。
[/Quote]

应该不会这样,因为Chronometer是依靠几个方法来实现,跟按钮控件没有直接的关系
vclongking 2010-07-19
  • 打赏
  • 举报
回复
没用过2.2 ,但我感觉LZ说的那个问题应该不存在 ,不会这样设计 ,而且你确定你每次按下按钮的差距都刚好合适?!都差0.11 不可能是吧。可以用LS的方法 ,自己检查一下 , 具体过程是怎么的。LOG打印一下看看。
xgia7 2010-07-18
  • 打赏
  • 举报
回复
顶起来
yihua0001 2010-07-18
  • 打赏
  • 举报
回复
建议加入LOG信息打印一下,看整个过程是如何调用的。有的按钮按下去和弹起来都要调用函数的。
karlzheng 2010-07-17
  • 打赏
  • 举报
回复
帮你顶...

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧