重新打印 Chronometer 值给出 Integer 值而不是 String
re-Printing Chronometer value gives Integer value instead of String
我试图提取一个字符串值,该值等于计时器停止的时刻,如“01:21”,但经过的时间给出一个整数值,如“11322”。
val chronometer = findViewById<Chronometer>(R.id.chronometer)
chronometer.base = SystemClock.elapsedRealtime()
chronometer.format = "%s"
chronometer.start()
button.setOnClickListener {
val elapsedTime = SystemClock.elapsedRealtime() - chronometer.base
header.text = elapsedtime.toString()
Toast.makeText(this,"$elapsedTime",Toast.LENGTH_SHORT).show()
}
准确地说,您得到的是长值而不是整数,因为 SystemClock.elapsedRealtime()
和 chronometer.base
return 都是长值。
要让你失望了,目前还没有办法直接得到计时表显示的时间,当然你可以把得到的毫秒换算成分秒,这样就可以再显示了。
这是我的示例,它是如何工作的:
private fun calculateTime(chronometerMillis : Long) {
val minutes = TimeUnit.MILLISECONDS.toMinutes(chronometerMillis)
val seconds = TimeUnit.MILLISECONDS.toSeconds(chronometerMillis) - (minutes * 60)
println("Recreated time: $minutes:$seconds")
}
如果您现在使用值 81000
调用此方法,即 1 分 21 秒(就像您的计时器一样),它会打印 Recreated time: 1:21
.
要在您的项目中使用它,只需 return 一个字符串:
private fun calculateTime(chronometerMillis : Long) : String {
val minutes = TimeUnit.MILLISECONDS.toMinutes(chronometerMillis)
val seconds = TimeUnit.MILLISECONDS.toSeconds(chronometerMillis) - (minutes * 60)
return "$minutes:$seconds"
}
private fun formattedChronometer(chronometer: Chronometer): String {
val elapsedTime = SystemClock.elapsedRealtime() - chronometer.base
val time = elapsedTime / 1000
val minutes = time / 60
val seconds = time % 60
return String.format("%02d:%02d",minutes,seconds)
}
在查看文档后设法使用此函数解决了它
我试图提取一个字符串值,该值等于计时器停止的时刻,如“01:21”,但经过的时间给出一个整数值,如“11322”。
val chronometer = findViewById<Chronometer>(R.id.chronometer)
chronometer.base = SystemClock.elapsedRealtime()
chronometer.format = "%s"
chronometer.start()
button.setOnClickListener {
val elapsedTime = SystemClock.elapsedRealtime() - chronometer.base
header.text = elapsedtime.toString()
Toast.makeText(this,"$elapsedTime",Toast.LENGTH_SHORT).show()
}
准确地说,您得到的是长值而不是整数,因为 SystemClock.elapsedRealtime()
和 chronometer.base
return 都是长值。
要让你失望了,目前还没有办法直接得到计时表显示的时间,当然你可以把得到的毫秒换算成分秒,这样就可以再显示了。
这是我的示例,它是如何工作的:
private fun calculateTime(chronometerMillis : Long) {
val minutes = TimeUnit.MILLISECONDS.toMinutes(chronometerMillis)
val seconds = TimeUnit.MILLISECONDS.toSeconds(chronometerMillis) - (minutes * 60)
println("Recreated time: $minutes:$seconds")
}
如果您现在使用值 81000
调用此方法,即 1 分 21 秒(就像您的计时器一样),它会打印 Recreated time: 1:21
.
要在您的项目中使用它,只需 return 一个字符串:
private fun calculateTime(chronometerMillis : Long) : String {
val minutes = TimeUnit.MILLISECONDS.toMinutes(chronometerMillis)
val seconds = TimeUnit.MILLISECONDS.toSeconds(chronometerMillis) - (minutes * 60)
return "$minutes:$seconds"
}
private fun formattedChronometer(chronometer: Chronometer): String {
val elapsedTime = SystemClock.elapsedRealtime() - chronometer.base
val time = elapsedTime / 1000
val minutes = time / 60
val seconds = time % 60
return String.format("%02d:%02d",minutes,seconds)
}
在查看文档后设法使用此函数解决了它