我有一个应用程序,其中我使用分钟和秒作为文本视图,随着搜索栏的拖动而改变,它工作正常。我唯一的问题是,当它达到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);
}
答案 0 :(得分:1)
为什么不使用
if (seconds == 0) {
secondString = "00";
}
或
if (secondString.equalsIgnoreCase("0")) {
secondString = "00";
}
字符串比较可能有一些问题!
答案 1 :(得分:0)
也绝不会将字符串与==
进行比较,因为String
是Object
,而是使用equals()
。例如if (secondString.equals("0"))
,但android_griezmann's answer就足够了。
没有检查的另一种解决方案是:
timerTextView.setText(String.format("%d:%02d", minutes, seconds)
因为我想知道5:00,6:00等会发生什么......
答案 2 :(得分:0)
只需调试并检查您是否进入if条件。如果没有,请尝试使用
进行比较 if (secondString.equals("0")) { secondString = "00"; }
同时检查你是否在TextView的xml中设置了maxLength属性。有时可能是原因。
答案 3 :(得分:0)
secondString=="0"
在cpp工作。 在Java / Android中你应该写
if (secondString.equals("0")) { secondString = "00"; }
答案 4 :(得分:0)
使用正则表达式标识一个数字。
if (secondString.matches("\\d") ) {
secondString = "0" + secondString;
}