如何在同一个按钮点击上设置不同的 onclick 监听器?
how to set different onclicklisteners on same button click?
我在 android 中实现了一个计时器,其中包含一个文本视图和一个用于 start/stop 的按钮。
如何设置在同一个按钮的 clicklistener 上注册不同的事件,以便在第一次单击时启动计时器,在第二次单击时停止计时器并报告事件之间的时间?
我在 android 中实现了一个计时器,其中包含一个文本视图和一个用于 start/stop 的按钮。
如何设置在同一个按钮的 clicklistener 上注册不同的事件,以便在第一次单击时启动计时器,在第二次单击时停止计时器并报告事件之间的时间?
编辑1
我所做的是,
@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));
}
}
但由于长启动时间是在 if 中开始的,当控件进入 else 循环时它显示
无法解析符号 'startTime'
请帮助并特别感谢 eliamyro
试试这个,
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
}
}
});
单击 (start/stop) 按钮时,根据您的代码启动计时器,return 按钮的值,当您再次单击时,该标志值可用于创建停止的 if 条件以及开始
您可以使用全局布尔值 isStart
并根据 isStart
的值启动或停止计时器。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isStart) {
// Stop timer
isStart = false;
} else {
// Start timer
isStart = true;
}
}
});
当您使用按钮开始和停止 Timer
时,您可以检查计时器是否为 运行。我建议为该用例扩展 TimerTask
(我从 中获取该代码):
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();
}
}
});
我在 android 中实现了一个计时器,其中包含一个文本视图和一个用于 start/stop 的按钮。
如何设置在同一个按钮的 clicklistener 上注册不同的事件,以便在第一次单击时启动计时器,在第二次单击时停止计时器并报告事件之间的时间? 我在 android 中实现了一个计时器,其中包含一个文本视图和一个用于 start/stop 的按钮。
如何设置在同一个按钮的 clicklistener 上注册不同的事件,以便在第一次单击时启动计时器,在第二次单击时停止计时器并报告事件之间的时间?
编辑1
我所做的是,
@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));
}
}
但由于长启动时间是在 if 中开始的,当控件进入 else 循环时它显示 无法解析符号 'startTime'
请帮助并特别感谢 eliamyro
试试这个,
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
}
}
});
单击 (start/stop) 按钮时,根据您的代码启动计时器,return 按钮的值,当您再次单击时,该标志值可用于创建停止的 if 条件以及开始
您可以使用全局布尔值 isStart
并根据 isStart
的值启动或停止计时器。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isStart) {
// Stop timer
isStart = false;
} else {
// Start timer
isStart = true;
}
}
});
当您使用按钮开始和停止 Timer
时,您可以检查计时器是否为 运行。我建议为该用例扩展 TimerTask
(我从
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();
}
}
});