私はAndroid用ストップウォッチアプリケーションを作っています。停止する時間をクリックすると停止し、開始を再度クリックすると再開する時間が必要です。私はhttp://www.goldb.org/stopwatchjava.htmlクラスを使用しています。現在のところ、[スタート]ボタンをクリックすると時間が再開されますが、2回目の後に[停止]をクリックすると、悪い時間が表示されます。再び開始ボタンを押すと、時間が正しく再開されます。ここに私のコードは次のとおりです。Android StopWatch - 時間を再開する方法
Handler mHandler = new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG_START_TIMER:
timer.start(); //start timer
mHandler.sendEmptyMessage(MSG_UPDATE_TIMER);
break;
case MSG_UPDATE_TIMER:
time = timer.getElapsedTime() + timeStoped;
hh = time/3600000;
hours.setText("" + formatter.format(hh));
time = time - hh * 3600000;
mm = time/60000;
minutes.setText("" + formatter.format(mm));
time = time - mm * 60000;
ss = time/1000;
seconds.setText("" + formatter.format(ss));
time = time - ss * 1000;
millis.setText("" + formatter.format(time/10));
mHandler.sendEmptyMessageDelayed(MSG_UPDATE_TIMER,REFRESH_RATE); //text view is updated every second,
break;
//though the timer is still running
case MSG_STOP_TIMER:
mHandler.removeMessages(MSG_UPDATE_TIMER); // no more updates.
timer.stop();//stop timer
time = timer.getElapsedTime();
timeStoped = timeStoped + time;
hh = time/3600000;
hours.setText("" + formatter.format(hh));
time = time - hh * 3600000;
mm = time/60000;
minutes.setText("" + formatter.format(mm));
time = time - mm * 60000;
ss = time/1000;
seconds.setText("" + formatter.format(ss));
time = time - ss * 1000;
millis.setText("" + formatter.format(time/10));
break;
default:
break;
}
}
};
リスナーがボタンスタート/ストップのために:
startBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!startIsPressed) {
mHandler.sendEmptyMessage(MSG_START_TIMER);
startIsPressed = true;
startBtn.setText(R.string.stop);
} else {
startIsPressed = false;
startBtn.setText(R.string.start);
mHandler.sendEmptyMessage(MSG_STOP_TIMER);
}
}
});
あなたのプロジェクトにhttp://www.goldb.org/stopwatchjava.htmlからStopwatchクラスを追加しましたか? –
はい、追加しました。問題は、timer.start()です。スタートが押されるたびに呼び出されます(悪い時間を止めてください)。しかし、私はそれを解決するための手がかりを持っていません。 – dgjorg
あなたの問題についてもっと詳しく説明できますか?私はあなたを得ていませんか? –