setOnChronometerTickListener的问题

时间:2018-05-01 21:43:17

标签: android-studio button kotlin chronometer

所以我试图搞砸Android工作室,并决定制作一个简单的计数器应用程序。每次按下按钮(覆盖整个屏幕),它都会增加1,如果按住按钮3秒,计数器将重置。就那么简单。但不幸的是,似乎无法让setOnChronometerTickListener工作,我需要它来看看计时器何时达到3s。我的代码如下:

$where

我已经尝试了

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

}

还尝试了我在网上看到的另一个代码,但它不是最新的。 关于如何解决这个问题甚至以不同的方式来实现相同结果的任何想法?

1 个答案:

答案 0 :(得分:0)

这对我有用。

我在活动中使用了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")
            }

        })