Android lateinit属性resultReceiver尚未初始化
我正在遵循指南,但当我运行我的应用程序时,它会因错误而崩溃Android lateinit属性resultReceiver尚未初始化,android,kotlin,Android,Kotlin,我正在遵循指南,但当我运行我的应用程序时,它会因错误而崩溃 kotlin.UninitializedPropertyAccessException: lateinit property resultReceiver has not been initialized at com.imincode.earthlings.view.ui.MainActivity.startIntentService(MainActivity.kt:339) My 339是下面函数中的行putExtra(AppCo
kotlin.UninitializedPropertyAccessException: lateinit property resultReceiver has not been initialized at com.imincode.earthlings.view.ui.MainActivity.startIntentService(MainActivity.kt:339)
My 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
类型,是一个内部类,如指南中所示
internal inner class AddressResultReceiver(handler: Handler) : ResultReceiver(handler) {
override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
// Display the address string
// or an error message sent from the intent service.
var addressOutput = resultData?.getString(AppConstants.RESULT_DATA_KEY) ?: ""
Timber.d("addressOutput: " + addressOutput)
// Show a toast message if an address was found.
if (resultCode == AppConstants.SUCCESS_RESULT) {
Timber.d("address found!!")
}
}
}
现在我不知道如何初始化resultReceiver,因为它是AddressResultReceiver类型,是一个内部类,如指南中所示
internal inner class AddressResultReceiver(handler: Handler) : ResultReceiver(handler) {
override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
// Display the address string
// or an error message sent from the intent service.
var addressOutput = resultData?.getString(AppConstants.RESULT_DATA_KEY) ?: ""
Timber.d("addressOutput: " + addressOutput)
// Show a toast message if an address was found.
if (resultCode == AppConstants.SUCCESS_RESULT) {
Timber.d("address found!!")
}
}
}
(?
)
您可以初始化内部类
如:YourOuterClass().AddressResultReceiver(yourHandler)
您可以检查是否已初始化,即:
if(!resultReceiver.isInitialized)
resultReceiver = YourOuterClass().AddressResultReceiver(yourHandler)
现在我不知道如何初始化resultReceiver,因为它是AddressResultReceiver类型,是一个内部类,如指南中所示
internal inner class AddressResultReceiver(handler: Handler) : ResultReceiver(handler) {
override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
// Display the address string
// or an error message sent from the intent service.
var addressOutput = resultData?.getString(AppConstants.RESULT_DATA_KEY) ?: ""
Timber.d("addressOutput: " + addressOutput)
// Show a toast message if an address was found.
if (resultCode == AppConstants.SUCCESS_RESULT) {
Timber.d("address found!!")
}
}
}
(?
)
您可以初始化内部类
如:YourOuterClass().AddressResultReceiver(yourHandler)
您可以检查是否已初始化,即:
if(!resultReceiver.isInitialized)
resultReceiver = YourOuterClass().AddressResultReceiver(yourHandler)
结果受试者未初始化该方法。。。还有,我应该为你的处理程序写什么?既然
handler
只在内部类中声明,那么我应该为您的handler添加什么?由于处理程序只在内部类中声明
,因此您需要将其从params中删除,因为您不需要将其作为参数!结果受试者未初始化该方法。。。还有,我应该为你的处理程序写什么?既然handler
只在内部类中声明,那么我应该为您的handler添加什么?由于处理程序只在内部类中声明
,因此您需要将其从params中删除,因为您不需要将其作为参数!