【问题标题】:Setting timer with seek bar使用搜索栏设置计时器
【发布时间】:2016-11-22 11:40:31
【问题描述】:

我有一个应用程序,我在其中使用分钟和秒作为文本视图,随着搜索栏的拖动而变化,它工作正常。我唯一的问题是,当它达到 10 分钟时(我已将最大值设置为 600,即 10 分钟),它应该像这样显示,例如 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);

        }

【问题讨论】:

  • 您是否尝试在调试器中运行它并检查您的变量在达到 600 时的值是多少?

标签: java android string-comparison android-seekbar


【解决方案1】:

你为什么不使用

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

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

字符串比较可能有问题!

【讨论】:

  • 谢谢它帮助了我 :) 但是你能理解我为什么在这种情况下字符串不起作用的逻辑是什么?
  • @Rumaan 简单的原因是字符串没有与 == 运算符进行比较。有一种特定的方法可以做到这一点。查看更新的答案
【解决方案2】:

只需调试并检查您是否正在进入 if 条件。如果没有,请尝试使用

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

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

【讨论】:

    【解决方案3】:
    secondString=="0"
    

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

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

    【讨论】:

      【解决方案4】:

      也不要将字符串与== 比较,因为StringObject,而是使用equals()。例如if (secondString.equals("0")),但android_griezmann's answer 应该足够了。

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

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-30
          • 2016-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-06
          相关资源
          最近更新 更多