Android 重新打印计时器值会给出整数值而不是字符串
我试图提取一个字符串值,该值等于计时器停止的时刻,如“01:21”,但经过的时间给出了一个整数值,如“11322”Android 重新打印计时器值会给出整数值而不是字符串,android,kotlin,chronometer,Android,Kotlin,Chronometer,我试图提取一个字符串值,该值等于计时器停止的时刻,如“01:21”,但经过的时间给出了一个整数值,如“11322” val天文钟=findViewById(R.id.天文钟) chronometer.base=SystemClock.elapsedRealtime() chronometer.format=“%s” 开始计时 button.setOnClickListener{ val elapsedTime=SystemClock.elapsedtrealtime()-chronometer.
val天文钟=findViewById(R.id.天文钟)
chronometer.base=SystemClock.elapsedRealtime()
chronometer.format=“%s”
开始计时
button.setOnClickListener{
val elapsedTime=SystemClock.elapsedtrealtime()-chronometer.base
header.text=elapsedtime.toString()
Toast.makeText(这是“$elapsedTime”,Toast.LENGTH\u SHORT.show())
}
准确地说,您得到的是一个长值而不是整数,因为SystemClock.elapsedRealtime()
和chronometer.base
都返回一个长值
我不得不让你失望,目前还没有办法直接得到计时器显示的时间,但是当然你可以把毫秒转换成分和秒,这样你就可以再显示一次
下面是我的示例,说明它是如何工作的:
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秒(就像您的计时器一样),它将打印重新创建的时间:1:21
要在项目中使用它,只需返回一个字符串:
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 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)
}