Android Studio在尝试在Kotlin中使用event.values时显示错误

oxosxuxt  于 2023-01-05  发布在  Kotlin
关注(0)|答案(2)|浏览(96)

我在Android Studio中遇到了以下问题。我试图重建一个使用光传感器的谷歌Android指南。在键入代码时,我从Android Studio中得到了这个错误。它说 * 未解析的引用:事件 * 我不知道如何处理它。这是我在Android Studio中使用kotlin的第一次尝试。
有人能告诉我怎么修吗?
我正在Mac OS X Catalina上使用Android Studio版本2021.3.1补丁1
我感谢任何帮助。
enter image description here
下面是我的代码:

package eu.jnaberle.myapplication

import android.app.Activity
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

class SensorActivity : Activity(), SensorEventListener {
    private lateinit var sensorManager: SensorManager
    private var mLight: Sensor? = null

    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
        mLight = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)
    }

    override fun onAccuracyChanged(p0: Sensor?, p1: Int) {
        TODO("Not yet implemented")
    }

    override fun onSensorChanged(p0: SensorEvent?) {
        val lux = event.values[0]
    }

    override fun onResume() {
        super.onResume()
        mLight?.also { light ->
            sensorManager.registerListener(this, light, SensorManager.SENSOR_DELAY_NORMAL)
        }
    }

    override fun onPause() {
        super.onPause()
        sensorManager.unregisterListener(this)
    }
}

尝试建立程序后的指示。也看了一些YouTube教程,但我不明白,他们不为我工作。

flvlnr44

flvlnr441#

如果我没记错的话,你可能会把它作为你的资源,如果你仔细看看:

override fun onSensorChanged(event: SensorEvent) {
    // The light sensor returns a single value.
    // Many sensors return 3 values, one for each axis.
    val lux = event.values[0]
    // Do something with this sensor value.
}

它与您实现不同:

override fun onSensorChanged(p0: SensorEvent?) {
    val lux = event.values[0]
}

只需将p0参数重命名为event

z2acfund

z2acfund2#

复制我的onSensorChanged方法并替换为您的

override fun onSensorChanged(p0: SensorEvent?) {
        val lux = p0.values[0]
    }

相关问题