Изменить текст из класса - PullRequest
0 голосов
/ 04 августа 2020

Я создал простой Java класс. На это надо потратить время. С System.out.println это тоже работает! Но как я могу сообщить определенному TextView, что он также должен измениться?

Countdown_Test. java

public class Countdown_test {

    private static long START_TIME_IN_MILLIS;
    private CountDownTimer mCountDownTimer;
    private boolean mTimerRunning;
    private long mTimeLeftInMillis;
    //private TextView timer;

    public Countdown_test(long start_time) {
        START_TIME_IN_MILLIS = start_time;
        mTimeLeftInMillis = START_TIME_IN_MILLIS;
        //timer = findViewById(R.id.timer); dosen't work
    }

    public void startTimer() {
        mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                mTimeLeftInMillis = millisUntilFinished;
                updateCountDownText();
            }
            @Override
            public void onFinish() {
                mTimerRunning = false;
            }
        }.start();
        mTimerRunning = true;
    }

    public void updateCountDownText() {
        int minutes = (int) (mTimeLeftInMillis / 1000) / 60;
        int seconds = (int) (mTimeLeftInMillis / 1000) % 60;
        String timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds);
        System.out.println(timeLeftFormatted);
    }
}

MainActivity. java

 Countdown_test ct = new Countdown_test(600000);

        button_start.setOnClickListener(v -> {
          
                ct.startTimer();

        });
        ct.updateCountDownText();

1 Ответ

1 голос
/ 04 августа 2020

Вы можете написать интерфейс TimeLeftListener с методом onTimeLeftChanged (String timeleft). Затем ваша активность расширяет TimeLeftListener и реализует метод onTimeLeftChanged (). Здесь вы обновляете свои взгляды. Когда вы инициируете свой CountDownTest, вы передаете действие следующим образом.

Countdown_test ct = new Countdown_test(600000, this);

И создаете все слушатели в своем классе CountDownTest, например,

myTimeLeftListener =(TimeleftListener)activity;

Затем в вашем updateCountDownText () - метод, который вы поместите

myTimeLeftListener.onTimeLeftChanged(timeleft)

Вы также можете использовать ViewModel и LiveData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...