我有两个按钮“开始”和“暂停”和一个Textview。停止观看android - 暂停,然后开始并从停止的地方开始
我的问题是,当我按下暂停按钮,然后按下后启动按钮,秒表不会停止的地方开始。
感谢您的帮助
public class StopWatch extends Activity {
/** Called when the activity is first created. */
private TextView timeflg;
private Button startButton;
private Button pauseButton;
private long mStartTime = 0L;
private Handler mHandler = new Handler();
long millis = 0L;
@Override
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (mStartTime == 0L) {
mStartTime = SystemClock.uptimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 0);
}
timeflg = (TextView) findViewById(R.id.timeflag);
startButton = (Button) findViewById(R.id.start);
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
mHandler.postDelayed(mUpdateTimeTask, 0);
}
});
pauseButton = (Button) findViewById(R.id.pause);
pauseButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
mHandler.removeCallbacks(mUpdateTimeTask);
}
});
}
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
millis = SystemClock.uptimeMillis() - mStartTime;
int seconds = (int) (millis/1000);
int minutes = seconds/60;
seconds = seconds % 60;
int milliseconds = (int) (millis%1000);
timeflg.setText("" + minutes + ":" + String.format("%02d",seconds)+ ":"
+ String.format("%03d",milliseconds));
mHandler.postDelayed(this,0);
}
};
}
对于将来的参考,您需要选择您的所有代码,然后单击“{}”按钮,以确保所有代码都显示在代码块中。 –
你的例子根本不是很清楚......你能澄清一下吗? –
非常感谢,通常当您按下停止按钮时,定时器将停止,然后当您按下开始按钮时,它会再次启动定时器。时间不会重置为零,应该从停止的位置开始。我不确定我的代码出了什么问题。 – kevin