2016-08-22 10 views
1

私はカウントダウンタイマーを使いたいが問題がある。私がそれを開始してから、戻るボタンを押すと(ライフサイクルをonStopに変更)、アクティビティに戻ります。私はTextViewでタイマー値を見ることができません。しかし、Logcatで私はタイマーが動作することを確認します。TextViewをCountdownTimer onResumeで更新するには?

質問:どのように活動に復帰した後のTextViewを更新する(onResume)

UPDATE。 私はアクティビティを終了しませんが、このコードは正常に動作します。しかし、私が戻るボタンを押すと、TextViewに値はありません。 (このメソッドが呼び出されたのonCreateから)タイマメソッドコード:

timer = new CountDownTimer(rest + 1000, 1000) { 
      @Override 
      public void onTick(long millisUntilFinished) { 
       secondsUntilFinish = Math.round(millisUntilFinished/1000); 
       String minutes = String.format("%02d",TimeUnit.SECONDS.toMinutes(secondsUntilFinish)); 
       String seconds = String.format("%02d",TimeUnit.SECONDS.toSeconds(secondsUntilFinish) - TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(secondsUntilFinish))); 
       tvRoutineTimer.setText(getResources().getString(R.string.exercise_rest_timer, minutes, seconds)); 
       Log.d(LOG_TAG, "onTick = " + getResources().getString(R.string.exercise_rest_timer, minutes, seconds)); 
      } 

      @Override 
      public void onFinish() { 
       tvRoutineProgress.setText(getString(R.string.routine_progress, currentStep, totalSteps)); 
       tvRoutineTimer.setText(getString(R.string.exercise_rest_timer, "00", "00")); 
       notificationAfterRest(); 
       btnExerciseDone.setText(getString(R.string.button_exercise_done)); 
       btnExerciseDone.setEnabled(true); 
       tvExercisePlaceholder.setText(getString(R.string.exercise_current_title)); 
      } 
     }.start(); 
+0

内部runOnUiThreadは、あなたのコードの一部を投稿する場合を助けるためにはるかに簡単になるでしょう:あなたのこのようなTextView更新します。 – Pztar

+0

@Pztar、完了です。あなたが 'TextView'で何を見ているのですか? –

+0

古い値か全く何もない? – Pztar

答えて

-1

はあなたのTextView UIスレッドから更新する必要があります。

runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       tvRoutineTimer.setText(getResources().getString(R.string.exercise_rest_timer, minutes, seconds)); 
     }); 

場所onTick()

+0

しかし、毎秒値を表示する必要がある場合は、 'runOnUiThread'メソッドを頻繁に呼び出すことはできますか? –

+0

はい、UIを更新するだけです。 'runOnUiThread'は短時間の簡単な答えです。 'Runnable'で' Handler'を使う方が良いでしょう。 – Pztar

+0

plsは更新をポストします。写真1枚目。タイマーはうまく動作しますが、セカンドタイマーはLogcatでのみ表示されますが、UIでは何も表示されません。 runOnUiThread()メソッドは役に立たない。 *** logcatでは、アクティビティに戻った後の「アクティビティアクティビティonStart()blah blah」が表示されます。私は言及することができます - CountDownTimer –

関連する問題