2016-12-14 15 views
0

私は15のカウンターを実装しているので、1つのテキストビューで「1」を、別のテキストビューで「5」を設定できるようにカウンタ値を分割します。 1つのテキストビューでは14 "1"、別のテキストビューでは "4"と表示されます。しかし、 "15"から "14"が表示されないので、 "13"にジャンプします。コード: - あなたはMARRAYを使用する必要がありますカウンターが表示されない場合は、数が15の場合

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にしても13を出力します。'count.split(" ")'を使用する代わりに、 –

答えて

2

[0]とMARRAY [1]、ないMARRAY [1]とMARRAY [2]。配列は0から始まることを忘れないでください。

+0

それは動作しません –

0

これはCountDownTimerに関連する既知のバグです。タイマーを実行している間、タイマーは1ティックをスキップします。関連する記事でいくつかの回避策を見ることができます。そして、より良い方法は、1000の代わりにcountDownIntervalを500に設定することです。

ここで解決策をもっと読む。 Android: CountDownTimer skips last onTick()!

+0

カウントダウンはミリ秒に正確ではないので、おそらく500に変更するあなたのポイントは、正しい解決策です、そして時々1001の休憩は秒をスキップします..私はおそらくよりスムーズなカウントダウンのためにそれをさらに低く設定してください。彼は最後の更新の秒値をキャッシュする必要があります。秒が変更されない場合は、画面を更新する必要はありません。 – lionscribe

関連する問題