按下按钮使countDownTimer暂停

时间:2017-11-17 15:38:05

标签: java android button countdowntimer

我正在尝试创建一个基本的应用程序,我可以按下按钮开始倒计时,同一按钮上的文本在“START”,“PAUSE”或“RESUME”之间变化,具体取决于按钮的状态被压的时候。目前按下按钮什么都不做,我不知道为什么。

按钮以文本“start”

开头

这是onCreate()

中按钮侦听器的代码

即使按钮上的起始文本是“开始”,“if”语句似乎都不是真的

clockText = findViewById(R.id.timer);    
final Button startButton = findViewById(R.id.timerBtn);
    startButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            if(clockText.getText().toString().toLowerCase().equals("resume")) {
                startTimer(milliLeft);
                clock.start();
                startButton.setText("resume");
            }
            else if(clockText.getText().toString().toLowerCase().equals("pause")){
                clock.cancel();
                clockText.setText(formatTime);
                startButton.setText("resume");
            }
            else if(clockText.getText().toString().toLowerCase().equals("start")){
                startTimer(30000);
                startButton.setText("pause");
                clock.start();
            }

        }
    });

这是startTimer()方法,

public int sec,min,fracSec;
public String formatTime;
public TextView clockText;
public CountDownTimer clock;
public long milliLeft;
public void startTimer(long time) {
    clock = new CountDownTimer(time, 100) {
        @Override
        public void onTick(long millisUntilFinished) {



                milliLeft = millisUntilFinished;
                min = (int) Math.floor(millisUntilFinished / 60000);
                sec = (int) (millisUntilFinished / 1000) % 60;
                fracSec = ((int) millisUntilFinished - sec * 1000) / 100;
                formatTime = min + ":" + sec + ":" + fracSec;
                clockText.setText(formatTime);

        }

        @Override
        public void onFinish() {
            clockText.setText("Finished");
        }
    };
}

2 个答案:

答案 0 :(得分:0)

您正在比较< clockText':

+

但是您要在按钮中设置值:

if(clockText.getText().toString().toLowerCase().equals("resume")) 

更改条件

答案 1 :(得分:0)

问题是因为您正在检查错误视图的文本值。您正在检查clockText的文本值而不是startButton,这是您正在设置文本值的视图" resume"," pause"," start&#34 ;上。您需要将代码更改为:

clockText = findViewById(R.id.timer);    
final Button startButton = findViewById(R.id.timerBtn);
    startButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            if(startButton.getText().toString().toLowerCase().equals("resume")) {
                startTimer(milliLeft);
                clock.start();
                startButton.setText("resume");
            }
            else if(startButton.getText().toString().toLowerCase().equals("pause")){
                clock.cancel();
                clockText.setText(formatTime);
                startButton.setText("resume");
            }
            else if(startButton.getText().toString().toLowerCase().equals("start")){
                startTimer(30000);
                startButton.setText("pause");
                clock.start();
            }

        }
    });