前提・実現したいこと
入力した時間分カウントダウンするタイマーアプリを作っているのですが、
同じCountDown関数を用いて「3.2.1」と、開始前のカウントダウンを表示した後に、
メインのカウントダウンを動かしたいです。
しかし現状は開始前のカウントダウンと、
メインのカウントダウンが同時に動いてしまうため困っています。
該当のソースコード
Kotlon
1package com.example.TapMeditation 2 3import androidx.appcompat.app.AppCompatActivity 4import android.os.Bundle 5import android.os.CountDownTimer 6import android.view.View 7import kotlinx.android.synthetic.main.activity_meditation.* 8 9class Meditation : AppCompatActivity() { 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState,) 12 setContentView(R.layout.activity_meditation,) 13 14 //問題の箇所、1行目と2行目が同時に動いてしまう。 15 //理想の動作としては1行目の終了後に、2行目を呼び出したい 16 CountDown(3000) 17 CountDown(intent.getLongExtra("TIME",0)) //他のアクティビティーから時間を受け取る 18 } 19 20 //カウントダウン開始関数 21 private lateinit var countDownTimer: CountDownTimer 22 fun CountDown(time:Long) { 23 24 countDownTimer = object : CountDownTimer(time, 500) { 25 override fun onTick(time: Long) { 26 val elapsedMinutes = time / 60000 27 val elapsedSeconds =(time-elapsedMinutes*60000)/1000 28 29 //カウントダウンをtxt_timeleftにて表示 30 txt_timeleft.text = String.format("%1$02d",elapsedMinutes)+":"+String.format("%1$02d",elapsedSeconds) 31 } 32 33 override fun onFinish() { 34 } 35 36 }.start() 37 } 38}
補足
・1行目、2行目を入れ替えると、
表示されるカウントダウンは変わるものの、同時にタイマーが動いている。
・エミュレーター上では、2行目のカウントダウン終了後に、
1行目のカウントダウンが残っていればそちらが表示される。
回答2件
あなたの回答
tips
プレビュー