尝试在我的 android 项目中每天重复在我的文本视图中执行文本更改



假设我想每天下午 02:00 自动更改我的 TextView 文本,如何实现此功能。

val df = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.JAPAN).parse("2:00pm")
val systemDat = Calendar.getInstance(Locale.JAPAN).after(df)
if (systemDat) {
binding.includeTokyoSession.text_one.text = "successful"
} else {
binding.includeTokyoSession.text_one.text = "failure"
}

我想您想在特定时间后更改TextView的文本,但似乎您在比较时不知道日期,并且您的代码中有几个错误。

首先,这行代码:

DateFormat.getTimeInstance(DateFormat.SHORT, Locale.JAPAN).parse("2:00pm")

将返回具有此日期和时间的本地时区Date实例01-01-1970 02:00:00。但是,您需要获取一个包含今天日期和时间14:00:00Date实例。

二、这行代码:

Calendar.getInstance(Locale.JAPAN).after(df)

这是Calendar::after()函数的错误用法,这是因为您只能将Calendar对象传递给函数以获得正确的比较结果,否则它将始终返回 false。

在您的情况下,您正在传递一个Date对象。

以下是Calendar::after()函数的实现。

public boolean after(Object when) {
return when instanceof Calendar
&& compareTo((Calendar)when) > 0;
}

如果您想将今天的当前时间与14:00正确比较(仅比较今天的时间(,以下是对代码的修改:

val calendarToCompare = Calendar.getInstance(Locale.JAPAN).apply {
set(Calendar.HOUR_OF_DAY, 14)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}
val systemDat = Calendar.getInstance().after(calendarToCompare)
if (systemDat) {
textview.text = "successful"
} else {
textview.text = "failure"
}

如果要执行生命周期感知视图更新(例如,设置文本视图的文本(,可以检查此要点。

最新更新