Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 重新打印计时器值会给出整数值而不是字符串_Android_Kotlin_Chronometer - Fatal编程技术网

Android 重新打印计时器值会给出整数值而不是字符串

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.

我试图提取一个字符串值,该值等于计时器停止的时刻,如“01:21”,但经过的时间给出了一个整数值,如“11322”

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)
}