如何在同一个按钮点击上设置不同的 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();
        }
    }
});