在Kotlin中动态更改textView值

时间:2018-01-18 06:51:14

标签: android android-layout kotlin proximitysensor

我将定时接近传感器更改为

 override fun onSensorChanged(event: SensorEvent) {
       val distance = event.values[0]
       val max = event.sensor.maximumRange
       a = System.currentTimeMillis()
    if (distance < Math.min(max, 8.toFloat())) {
        listener.onNear()
    } else {
        listener.onFar()
    }

        b = System.currentTimeMillis()
    System.out.println("That took " + (b- a) + " milliseconds")
}

出现在我的ProximityDetector.kt文件

并使用

将其显示在我的应用上
timeTaken.setText("That took " + (b - a) + " milliseconds")

位于我的SettingsActivity.kt文件中

但它只显示一个传感器更改的值,对于后续的传感器更改,应用程序需要撤消并再次打开。如何显示每个传感器更改的值??? 我尝试过这种方式

override fun onSensorChanged(event: SensorEvent) {
    timeTaken.setText("That took " + (b - a) + " milliseconds")}

但它显示了修饰符&#39;覆盖&#39;不适用于本地功能

2 个答案:

答案 0 :(得分:0)

在ProximityDetector.kt文件中创建interface

interface OnSensorValueChange{
    fun onValueChange(value: Long);
}

在SettingsActivity.kt文件中实现它。

override fun onValueChange(value: Long) {
    timeTaken.setText("That took " + value + " milliseconds")
}

SettingsActivity类构造函数中传递ProximityDetector引用并指定它。

class ProximityDetector constructor(var onSensorValueChange: ProximityDetector.OnSensorValueChange)

并调用接口更新值的方法。

    override fun onSensorChanged(event: SensorEvent) {
       val distance = event.values[0]
       val max = event.sensor.maximumRange
       a = System.currentTimeMillis()
    if (distance < Math.min(max, 8.toFloat())) {
        listener.onNear()
    } else {
        listener.onFar()
    }

        b = System.currentTimeMillis()
    System.out.println("That took " + (b- a) + " milliseconds")
    onSensorValueChange.onValueChange((b- a)) //add this line.
}  

答案 1 :(得分:-1)

在kotlin中,不要像java一样使用getter和setter。下面给出了kotlin的正确格式。

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
    textView.text = getString(R.string.name)
}

要从Textview获取值,我们必须使用此方法

val str: String = textView.text.toString()

 println("the value is $str")