2016-11-22 13 views
0

У меня есть приложение, в котором я использовал минуты и секунды в качестве текстового представления, которое изменяется с помощью перетаскивания строки поиска, и оно работает нормально. Моя единственная проблема в том, что, когда она достигает 10 минут (я установил max до 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

Вы пытались запустить его в отладчике и проверить, каковы значения переменных, когда вы достигнете 600? –

ответ

1

Почему бы вам не использовать

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

или

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

сравнения строк могут иметь некоторые проблемы!

+0

Спасибо, что это помогло мне :) но можете ли вы, пожалуйста, понять меня, в чем была логика, почему в этом случае не работает строка? – Rumaan

+0

@Rumaan Простая причина: строки не сравниваются с оператором ==. Для этого существует один конкретный метод. См. Обновленный ответ –

+0

Поблагодарили – Rumaan

0

Также не сравнивайте строки с ==, так как String является Object, вместо этого используется equals(). Например, if (secondString.equals("0")), но android_griezmann's answer должно быть достаточно.

Еще одно решение без проверки будет:

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

, потому что мне интересно, что происходит на 5:00, 6:00 и т.д. ...

0

Просто отладки и проверить, является ли вы вступаете в КРП состояние. Если нет, то попробуйте сравнить с использованием

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

Также убедитесь, что вы установили атрибут MAXLENGTH в XML из TextView.Sometimes, которые могут быть причиной.

0
secondString=="0" 

is work in cpp. в Java/Android, вы должны написать

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