如何在同一个按钮点击上设置不同的onclicklisteners?

时间:2018-01-30 13:09:12

标签: java android onclicklistener android-button

我在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

4 个答案:

答案 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();
        }
    }
});