George Brooks
George Brooks

Reputation: 199

Android Studio: Reset CountDownTimer

I have a timer that counts down from 10, when it reaches zero it makes a random imageview in an array turn visible. I just want this timer to reset itself every time it reaches zero. How can I Achieve this?

Current Attempt:

public class rear_gunner extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_rear_gunner);
    View view2 = findViewById(R.id.item_frame);
    final ImageView enemy1 = (ImageView) findViewById(R.id.enemy1);
    ImageView enemy2 = (ImageView) findViewById(R.id.enemy2);
    ImageView enemy3 = (ImageView) findViewById(R.id.enemy3);
    ImageView enemy4 = (ImageView) findViewById(R.id.enemy4);
    //sets screen orientation on created
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    view2.bringToFront();
    final ImageView[] enemies = new ImageView[4];
    enemies[0] = enemy1;
    enemies[1] = enemy2;
    enemies[2] = enemy3;
    enemies[3] = enemy4;


    Random rand = new Random();
    int n = rand.nextInt(20) + 1;

    CountDownTimer countDownTimer = new CountDownTimer(10000, 1000) {
        @Override
        public void onFinish() {
            Random rand = new Random();
            int n = rand.nextInt(3) + 1;
            enemies[n].setVisibility(View.VISIBLE);
        }

        @Override
        public void onTick(long millisUntilFinished) {

        }

    };

    countDownTimer.start();
}


}

Any help or advice to improve the code here would be greatly appreciated thank you.

Upvotes: 1

Views: 2702

Answers (1)

Erwin Kurniawan A
Erwin Kurniawan A

Reputation: 1008

Create object CountDownTimer outside OnCreate() then .start() again that object after your random is done inside onFinish()

CountDownTimer countDownTimer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    countDownTimer = new CountDownTimer(2000, 1000) {
        @Override
        public void onFinish() {
            //what you want to do after CountDownTimer is done
            countDownTimer.start(); //start again
        }

        @Override
        public void onTick(long millisUntilFinished) {

        }

    };

    countDownTimer.start();
}

Upvotes: 3

Related Questions