尝试在我的 android 项目中每天重复执行文本视图中的文本更改
Trying to perform a text change in my textview at a reoccurring time on daily basis in my android project
let say i will like to automatically change my textview text at 02:00pm everyday how do I implement this functionality.
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")
将 return 一个 Date
具有您当地时区 01-01-1970 02:00:00
日期和时间的实例。但是,您需要获取具有今天日期和时间 14:00:00
.
的 Date
实例
二、这行代码:
Calendar.getInstance(Locale.JAPAN).after(df)
这是Calendar::after()
函数的错误用法,因为你只能传递一个Calendar
对象给函数才能得到正确的比较结果,否则它总是return假的。
在您的情况下,您正在传递一个 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"
}
如果你想执行生命周期感知视图更新(例如设置你的文本视图的文本),你可以检查这个gist。
let say i will like to automatically change my textview text at 02:00pm everyday how do I implement this functionality.
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")
将 return 一个 Date
具有您当地时区 01-01-1970 02:00:00
日期和时间的实例。但是,您需要获取具有今天日期和时间 14:00:00
.
Date
实例
二、这行代码:
Calendar.getInstance(Locale.JAPAN).after(df)
这是Calendar::after()
函数的错误用法,因为你只能传递一个Calendar
对象给函数才能得到正确的比较结果,否则它总是return假的。
在您的情况下,您正在传递一个 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"
}
如果你想执行生命周期感知视图更新(例如设置你的文本视图的文本),你可以检查这个gist。