Когда отсчет времени закончится, я пойду к следующему занятию? - PullRequest
0 голосов
/ 23 июня 2019

У меня есть два таймера обратного отсчета с установленной активностью в MainActivity, я хочу, чтобы по окончании таймера обратного отсчета он перешел к следующей активности.вот мой код:

открытый класс MainActivity расширяет AppCompatActivity {

TextView txtViewDays,txtViewHours,txtViewMinutes,txtViewSecond;


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

    txtViewDays = findViewById(R.id.days);
    txtViewHours = findViewById(R.id.hours);
    txtViewMinutes = findViewById(R.id.minutes);
    txtViewSecond = findViewById(R.id.seconds);

    start_countdown_timer();
}

private void start_countdown_timer()
{
    SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy, HH:mm:ss");
    formatter.setLenient(false);

    final long[] startTime = new long[1];

    String endTime = "23.06.2019, 22:56:10";
    long milliseconds=0;

    final CountDownTimer mCountDownTimer;

    Date endDate;
    try {
        endDate = formatter.parse(endTime);
        milliseconds = endDate.getTime();

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    startTime[0] = System.currentTimeMillis();


    mCountDownTimer = new CountDownTimer(milliseconds, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {


            Long serverUptimeSeconds =
                    (millisUntilFinished - startTime[0]) / 1000;

            String daysLeft = String.format("%d", serverUptimeSeconds / 86400);
            txtViewDays.setText(daysLeft);

            String hoursLeft = String.format("%d", (serverUptimeSeconds % 86400) / 3600);
            txtViewHours.setText(hoursLeft);

            String minutesLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) / 60);
            txtViewMinutes.setText(minutesLeft);
            Log.d("minutesLeft",minutesLeft);

            String secondsLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) % 60);
            txtViewSecond.setText(secondsLeft);
        }

        @Override
        public void onFinish() {
            Intent i = new Intent(MainActivity.this,New.class);
            startActivity(i);
            finish();
        }
    };
    mCountDownTimer.start();
}
}

Что я могу сделать?NB: код собран, и я тоже пытаюсь, но не могу. Спасибо

1 Ответ

1 голос
/ 23 июня 2019

С вашим кодом вам нужно 1561330519961ms, что означает, что для вызова метода onFinish должно пройти несколько дней.Я попробовал ваш код с 1мин для таймера вместо

milliseconds = endDate.getTime();

и работал просто отлично.После того, как таймер закончил, он изменил активность.

--- edit ---

Этот пример кода будет работать в течение 6 секунд, а затем вызовет метод onFinish

milliseconds = 6000
mCountDownTimer = new CountDownTimer(milliseconds, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {

    }

    @Override
    public void onFinish() {
        Intent i = new Intent(MainActivity.this,Myclass.class);
        startActivity(i);
        finish();
    }
};
mCountDownTimer.start();
...