Q&A
前提
androidについて質問します。
自分はandroidでカウントダウンタイマーを作っています。
主な機能はスタート機能とストップ機能です。
しかしストップを押して、スタートを押すとカウントダウンが最初空になってしまいます。それを途中から再開させるにはどのようにしたらいいのでしょうか。
実現したいこと
CountDownTimerでカウントダウンを作成したい
該当のソースコード
MainActivity.java
1import androidx.appcompat.app.AppCompatActivity; 2 3import android.content.Intent; 4import android.os.Bundle; 5import android.os.CountDownTimer; 6import android.view.View; 7import android.widget.Button; 8import android.widget.TextView; 9 10public class MainActivity extends AppCompatActivity { 11 12 CountDownTimer countDownTimer; // タイマー本体 13 long alltime = 10000; // タイマー終了時間 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 20 Button start = findViewById(R.id.start); 21 start.setOnClickListener((View v) -> { 22 countDownTimer.start(); 23 }); 24 Button stop = findViewById(R.id.stop); 25 stop.setOnClickListener((View v) -> { 26 countDownTimer.cancel(); 27 }); 28 } 29 30 31 // 画面非表示に実行 //////////////////////////////// 32 @Override 33 protected void onPause() { 34 super.onPause(); 35 countDownTimer.cancel(); 36 countDownTimer = null; 37 } 38 39 // 画面再表示に実行 ////////////////////////////////// 40 @Override 41 protected void onResume() { 42 super.onResume(); 43 countDownTimer = new CountDownTimer(alltime, 100) { 44 @Override 45 public void onTick(long millisUntilFinished) { 46 alltime= millisUntilFinished; 47 int time = (int)millisUntilFinished /1000; 48 ((TextView)findViewById(R.id.tv)).setText("あと" + time + "秒"); 49 } 50 @Override 51 public void onFinish() { 52 Intent intent = new Intent(MainActivity.this,MainActivity.class); 53 startActivity(intent); 54 } 55 }.start(); 56 } 57}
activity_main.xml
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:gravity="center" 8 android:orientation="vertical" 9 android:padding="20dp" 10 tools:context=".MainActivity"> 11 12 <TextView 13 android:id="@+id/tv" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:text="Hello World!" 17 android:textSize="30sp" /> 18 19 <Button 20 android:id="@+id/start" 21 android:layout_width="0dp" 22 android:layout_height="wrap_content" 23 android:layout_marginStart="8dp" 24 android:layout_marginTop="8dp" 25 android:layout_marginEnd="8dp" 26 android:text="スタート" 27 app:layout_constraintEnd_toEndOf="parent" 28 app:layout_constraintStart_toStartOf="parent" 29 app:layout_constraintTop_toTopOf="@+id/guideline2" /> 30 31 <Button 32 android:id="@+id/stop" 33 android:layout_width="0dp" 34 android:layout_height="wrap_content" 35 android:layout_marginStart="8dp" 36 android:layout_marginTop="8dp" 37 android:layout_marginEnd="8dp" 38 android:text="ストップ" 39 app:layout_constraintEnd_toEndOf="parent" 40 app:layout_constraintStart_toStartOf="parent" 41 app:layout_constraintTop_toBottomOf="@+id/start" /> 42 43 <androidx.constraintlayout.widget.Guideline 44 android:id="@+id/guideline2" 45 android:layout_width="wrap_content" 46 android:layout_height="wrap_content" 47 android:orientation="horizontal" 48 app:layout_constraintGuide_percent="0.14" /> 49 50</androidx.constraintlayout.widget.ConstraintLayout>
試したこと
参考ソースを見て試してみましたがダメでした。
参照先
http://hakoniwadesign.com/?p=10775
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/11/28 12:10
2022/11/28 13:07 編集
2022/11/28 14:43
2022/11/28 15:10
2022/11/28 16:26