使用搜索栏设置计时器

Setting timer with seek bar

我有一个应用程序,我在其中使用分钟和秒作为文本视图,随着搜索栏的拖动而改变,它工作正常。我唯一的问题是,当它达到 10 分钟时(我已将最大值设置为 600,即十分钟),它应该像这样显示,例如 10:00 但不幸的是它显示为这样 10:0 我已经在模拟器和 genymotion 中对其进行了测试,下面是我的代码

SeekBar seekBar = (SeekBar)findViewById(R.id.seekBarController);
    final TextView timerTextView = (TextView)findViewById(R.id.timerTextview);

    seekBar.setMax(600);
    seekBar.setProgress(30);
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {

            int minutes = progress / 60;
            int seconds = progress - minutes * 60;


            String secondString = Integer.toString(seconds);

            if (secondString == "0") {

                secondString = "00";

            }
                timerTextView.setText(Integer.toString(minutes) + ":" + secondString);

        }

你为什么不用

if (seconds == 0) {
    secondString = "00";
}

if (secondString.equalsIgnoreCase("0")) {
    secondString = "00";
}

字符串比较可能有问题!

也不要将字符串与 == 进行比较,因为 String 是一个 Object,而是使用 equals()。例如 if (secondString.equals("0")),但 应该足够了。

另一个没有检查的解决方案是:

timerTextView.setText(String.format("%d:%02d", minutes, seconds)  

因为我想知道 5:00、6:00 等会发生什么...

调试一下,看看你是不是进入了if条件。如果不是,请尝试使用

进行比较
      if (secondString.equals("0")) { secondString = "00";  }

还要检查您是否在 TextView.Sometimes 的 xml 中设置了 maxLength 属性,这可能就是原因。

secondString=="0"

在 cpp 工作。 在 Java/Android 你应该写

if (secondString.equals("0")) { secondString = "00";  }

使用正则表达式识别单个数字。

if (secondString.matches("\d") ) {
    secondString = "0" + secondString;
}