所以我试着摆弄android studio,决定做一个简单的计数器应用程序。每次我按下按钮(覆盖整个屏幕),它会加1,如果我按住按钮3秒,计数器就会复位。就这么简单。但不幸的是,似乎无法让setOnChronometerTickListener工作,我需要它来查看计时器何时达到3s。下面是我的代码:
var button = findViewById<Button>(R.id.button)
val chrono = Chronometer(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnTouchListener(OnTouchListener { v , event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> { chronoStart()}
MotionEvent.ACTION_UP -> { chrono.stop()}
}
false
})
}
fun chronoStart() {
chrono.start()
chrono.setOnChronometerTickListener() {}
}
var counter = 0;
fun count(view: View){
val button = view as Button
}
我已经试过了
chrono.setOnChronometerTickListener(chrono.onChronometerTickListener!!) {}
我还尝试了我在网上看到的另一个代码,但它不是最新的。对于如何解决这个问题,或者甚至是实现相同结果的不同方法,有什么想法吗?
发布于 2019-09-26 15:16:45
以下是对我起作用的方法。
我在activity中使用了接口Chronometer.OnChronometerTickListener
package com.demo.tappycounterappy
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.CountDownTimer
import android.os.SystemClock
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.Chronometer
import android.widget.TextView
class MainActivity : AppCompatActivity(), Chronometer.OnChronometerTickListener {
private lateinit var _chronometerTimer:Chronometer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
_chronometerTimer = findViewById(R.id.chronometer_timer)
_chronometerTimer.base = SystemClock.elapsedRealtime() + 5000
_chronometerTimer.setOnChronometerTickListener(this)
_chronometerTimer.start()
}
override fun onChronometerTick(chronometer: Chronometer){
Log.e("onChronometerTick", "called")
}
}
我已经测试过了,我的onChronometerTick函数每秒都会被调用。
注意:是的,就像你说的那样。以下代码不起作用
_chronometerTimer.setOnChronometerTickListener ( Chronometer.OnChronometerTickListener {
fun onChronometerTick(chronometer:Chronometer) {
Log.e("onChronometerTick", "called")
}
})
https://stackoverflow.com/questions/50124273
复制