lateinit属性resultReceiver尚未初始化

时间:2019-08-17 18:20:58

标签: android kotlin

我遵循指南here,但是当我运行我的应用程序时,它崩溃并显示错误

 override func viewWillAppear(_ animated: Bool) {
    let ud = UserDefaults.standard
    let startingX = ud.double(forKey: "startingX")
    let startingY = ud.double(forKey: "startingY")

    let camera = GMSCameraPosition.camera(withLatitude: startingX, longitude: startingY, zoom: 18.0)
    googleMapView.camera = camera

    self.googleMapView.mapType = .hybrid

    self.googleMapView.settings.scrollGestures = true
    self.googleMapView.settings.rotateGestures = true
    self.googleMapView.settings.consumesGesturesInView = true
}

我的339是下面函数内的行kotlin.UninitializedPropertyAccessException: lateinit property resultReceiver has not been initialized at com.imincode.earthlings.view.ui.MainActivity.startIntentService(MainActivity.kt:339)

putExtra(AppConstants.RECEIVER, resultReceiver)

private fun startIntentService() { val intent = Intent(this, FetchAddressIntentService::class.java).apply { putExtra(AppConstants.RECEIVER, resultReceiver) putExtra(AppConstants.LOCATION_DATA_EXTRA, lastLocation) } startService(intent) } 声明如下

resultReceiver

现在我不知道如何初始化private lateinit var resultReceiver: AddressResultReceiver ,因为它是resultReceiver类型,是指南中显示的内部类

AddressResultReceiver

1 个答案:

答案 0 :(得分:0)

  

现在我不知道如何初始化resultReceiver,因为它是AddressResultReceiver类型,是指南中显示的内部类

The lateinet property help you avoid null checks when referencing?

您可以像inner class那样初始化YourOuterClass().AddressResultReceiver(yourHandler)

您可以检查是否已初始化,即:

 if(!resultReceiver.isInitialized)
    resultReceiver = YourOuterClass().AddressResultReceiver(yourHandler)