2016-12-14 2 views
0

Я реализую счетчик 15, затем я разделяю значение счетчика, чтобы я мог установить «1» в одном текстовом виде и «5» в другом текстовом представлении. с 14 "1" в одном текстовом виде и "4" в другом. Но то, что он делает, не показывает «14» от «15» до перехода на «13». Пожалуйста, помогите мне. Ниже мой кодСчетчик не показывает 14, когда счетчик из 15 в Android

Код: -

handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       MainActivity.help_icon.setClickable(false); 

       new CountDownTimer(15000,1000) { 

        public void onTick(long millisUntilFinished) { 
         hideDigits(); 
         hideRowOneTwoFourSixElements(); 
         digit2.setVisibility(View.VISIBLE); 
         digit3.setVisibility(View.VISIBLE); 
         digit4.setVisibility(View.VISIBLE); 
         digit2.setText("0:"); 

         String count=""+millisUntilFinished/1000; 
         String[] mArray = count.split(""); 
         Log.i("tag","count outside->"+count); 

         if(count.length()==1) 
         { 
          digit3.setVisibility(View.VISIBLE); 
          digit3.setText("0"); 
          try 
          { 
           digit4.setText(mArray[1]); 
          } 
          catch (Exception e){} 
         } 

         else 
         { 
          try 
          { 
           Log.i("tag","count inside->"+count + "array 1-->"+ mArray[1]); 
           digit3.setText(mArray[1]); 
          } 
          catch (Exception e) 
          { 

          } 


          try{ 
           Log.i("tag","count inside->"+count + "array 2-->"+ mArray[2]); 
           digit4.setText(mArray[2]); 
          }catch (Exception e){} 
         } 



        } 

        public void onFinish() { 
         mode_button.setEnabled(true); 
         isRunning=true; 
         mainDisplay(); 
        } 
       }.start(); 

      } 
     }, 7000); 



    } 
+0

Причина голосования? – Talha

+0

Что говорит журнал? – Talha

+0

То же самое также печатает 15, затем 13. –

ответ

2

Вы должны использовать mArray [0] и mArray [1], не mArray [1] и mArray [2]. Помните, что массивы начинаются с 0.

+0

Это не работает –

0

Это известная ошибка, связанная с CountDownTimer. Таймер пропускает один тик во время выполнения таймера. Вы можете увидеть некоторые обходные пути в связанных сообщениях. И лучше, чем установить countDownInterval на 500 вместо 1000.

Подробнее здесь. Android: CountDownTimer skips last onTick()!

+0

Возможно, ваша точка, чтобы изменить на 500, является правильным решением, так как обратный отсчет не является точным для миллисекунды, а иногда антракт 1001 пропустит секунду .. Я бы, вероятно, установите его еще ниже, для более плавного обратного отсчета. Он должен кэшировать значение секунд последнего обновления, поэтому, если секунды не меняются, нет необходимости обновлять экран. – lionscribe

Смежные вопросы