2017-01-27 3 views
-1

Так что я пытаюсь отобразить время, прошедшее с момента нажатия кнопки на моем приложении.Почему моя текстовая строка не обновляется?

Мой код:

/*This will initiate the timer*/ 
     timer = new Timer(); 
     timer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         start=System.currentTimeMillis(); 
         time=System.currentTimeMillis()-start; 
         currenttimedisplay.setText(Long.toString(time)); 
        } 
       }); 
      } 
     }, 0, 1000); 

Трассы приложение, но при нажатии на кнопку она просто показывает «0.0».

Приложение не закрывается. Любая помощь приветствуется!

+0

Я не уверен, что получаю это, но когда вы устанавливаете начальную переменную непосредственно перед вычислением времени, разве не логично, что ответ будет равен 0.0? Возможно, переместите настройку стартовой переменной вне этого блока. – Micha

+0

Было бы также полезно знать, в каком классе вы это делаете – Chisko

ответ

0

Пожалуйста, попробуйте следующее:

/*This will initiate the timer*/ 
     timer = new Timer(); 
     start=System.currentTimeMillis(); 
     timer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         time=System.currentTimeMillis()-start; 
         currenttimedisplay.setText(Long.toString(time)); 
        } 
       }); 
      } 
     }, 0, 1000); 
+0

Это было именно оно. Спасибо огромное! –

+0

Нет проблем. Для объяснения того, почему это работает, см. Мой (возможно, слишком краткий) комментарий к вашему вопросу или ответ @ nvi9. – Micha

0

В коде значение start изменяется каждый раз, когда таймер истекшего (start = System.currentTimeMillis()), поэтому значение time всегда 0 (System.currentTimeMillis() - система. currentTimeMillis() должен быть 0, если он вызывается без или очень маленькая разница во времени ...). Поэтому вы должны установить значение start при нажатии кнопки, затем рассчитать разницу и обновить текстовое представление в задаче таймера.