刚刚接触关于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.
本人代码如此: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.
应该不会这样,因为Chronometer是依靠几个方法来实现,跟按钮控件没有直接的关系
希望您能解答
你所期望的功能, 可以使用setBase().
如果你想用setBase将计时器清零的话,可以用下面的语句:setBase(SystemClock.elapsedRealtime());
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());
}
});
Set the time that the count-up timer is in reference to.
Parameters
base Use the elapsedRealtime() time base.
如果要记时间的话,你直接用java的代码System.currentTimeMillis()直接取系统时间好了。Chronometer其实在实际中,几乎没有太多的用武之地。通常的做法是,在调用Chronometer的start()方法的同时,调用System.currentTimeMillis(),在调用Chronometer的stop()方法的同时,也调用System.currentTimeMillis(),然后将两者相减即可。