我正在尝试创建一个基本的应用程序,我可以按下按钮开始倒计时,同一按钮上的文本在“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");
}
};
}
答案 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();
}
}
});