从课堂上更改文字

IgotYouLiketheGoat:

我创建了一个简单的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();
狭缝

您可以编写一个带有方法onTimeLeftChanged(String timeleft)的TimeLeftListener接口。然后,您的活动将扩展TimeLeftListener并实现onTimeLeftChanged()方法。这是您更新视图的地方。当您启动CountDownTest时,您将通过这样的活动。

Countdown_test ct = new Countdown_test(600000, this);

然后像这样在您的CountDownTest类中创建监听器

myTimeLeftListener =(TimeleftListener)activity;

然后在您的updateCountDownText()-方法中

myTimeLeftListener.onTimeLeftChanged(timeleft)

您也可以使用ViewModel和LiveData。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章