将类中的文本更改为out


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

您可以编写一个接口,一个TimeLeftListener,带有一个onTimeLeftChanged(String timeleft(方法。然后,您的活动扩展TimeLeftListener并实现onTimeLeftChanged((-方法。这是您更新视图的地方。当你开始倒计时测试时,你就通过了这样的活动。

Countdown_test ct = new Countdown_test(600000, this);

并在CountDownTest类中创建一个侦听器,如

myTimeLeftListener =(TimeleftListener)activity;

然后在您的updateCountDownText((-方法中放入

myTimeLeftListener.onTimeLeftChanged(timeleft)

您也可以使用ViewModel和LiveData。

最新更新