使用搜索栏设置计时器
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;
}
我有一个应用程序,我在其中使用分钟和秒作为文本视图,随着搜索栏的拖动而改变,它工作正常。我唯一的问题是,当它达到 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;
}