我在android中实现了一个带有一个文本视图的计时器和一个用于启动/停止的按钮。
如何在同一个按钮的clicklistener上设置注册不同的事件,这样当它第一次点击它时会启动一个计时器,当第二次点击时它会停止计时器并报告事件之间的时间? 我在android中实现了一个带有一个文本视图的计时器和一个用于启动/停止的按钮。
如何在同一个按钮的clicklistener上设置注册不同的事件,这样当它第一次点击它时会启动一个计时器,当第二次点击时它会停止计时器并报告事件之间的时间? / p>
EDIT1
我做的是,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_depth);
findViewById(R.id.btn).setOnClickListener(this);
}
boolean showingFirst = true;
public void generate(View view){
if(showingFirst){
long startTime = System.currentTimeMillis();
showingFirst = false;
}else{
long difference = System.currentTimeMillis() - startTime;
showingFirst = true;
TextView myText = (TextView)findViewById(R.id.tv);
myText.setText(String.valueOf(difference));
}
}
但是因为如果控件进入其他循环,则启动很长的启动时间 无法解析符号" startTime'
请帮助,特别感谢eliamyro
答案 0 :(得分:1)
您可以使用全局布尔值isStart
执行此操作,并根据isStart
的值启动或停止计时器。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isStart) {
// Stop timer
isStart = false;
} else {
// Start timer
isStart = true;
}
}
});
答案 1 :(得分:0)
试试这个,
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(btn.getText().toString().equals("Start")){
btn.setText("Stop");
// start timer
}else{
btn.setText("Start");
// stop timer
}
}
});
答案 2 :(得分:0)
单击(开始/停止)按钮根据您的代码启动计时器并将值返回到按钮,当您再次单击时,该标志值可用于创建停止和启动的if条件
答案 3 :(得分:0)
当您使用按钮启动和停止Timer
时,您只需检查计时器是否正在运行。我建议为该用例扩展TimerTask
(我从here获取该代码):
public class YourTimerTask extends TimerTask {
private boolean isRunning = false;
@Overrides
public void run() {
this.isRunning = true;
//rest of run logic here...
}
public boolean isRunning() {
return this.isRunning;
}
}
然后在您的onClickListener
中,您可以检查您的计时器是否正在运行:
startStopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (yourTimer.isRunning()) {
stopTimer();
} else {
startTimer();
}
}
});