我正在尝试在Kotlin Android项目中使用Retrofit实现API。此API尚未在项目的另一个活动中使用,并且可以正常工作。实际情况略有不同。我正在尝试在打开Web视图的活动中实现此API,并在JS的回调中调用翻新实例和API。
在这种情况下,API无法启动,并且我收到错误消息:
试图在空对象引用上调用虚拟方法'java.lang.Object android.content.Context.getSystemService(java.lang.String)'
有任何与此问题相关的想法吗? 谢谢
我已经检查了所有链接到API的对象,以防止所有空指针。
我也曾尝试在UiThread
上调用api,但没有任何帮助。
//this is the request creation
override fun callMonthlySavingApi(response: ChangeMonthlySavingResponse) {
iView.showLoader()
val request = UserSettingsRequest.RequestBuilder()
request.monthlySaving = response.value
interactor.updateMonthlySaving(request.createRequestParams(), this)
}
//this is the api implementation
override fun updateMonthlySaving(
request: UserSettingsRequest,
listener: ChangeMonthlySavingMVP.ChangeMonthlySavingModel.onUpdateMonthlySavingListener
) {
val response: Single<UserSettingsResponse> = apiClient.updateUser(
ApiUtils.getEndpoint(ApiUtils.ApiKey.POST_UPDATE_USER_SETTINGS),
request.getMapRequest()
)
response.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ data: UserSettingsResponse? ->
if (data != null && !data.checkError()) {
listener.onUpdateMonthlySavingFinish()
} else {
listener.onUpdateMonthlySavingInternalError(data?.error?.message ?: "Error")
}
},
{ throwable: Throwable? ->
//here i receive the error and it seems linked to nothing
//ERROR:
//Attempt to invoke virtual method 'java.lang.Object //android.content.Context.getSystemService(java.lang.String)' on a null //object reference
if (throwable != null) {
listener.onUpdateMonthlySavingError(throwable)
}
}
)
}
这是错误:
试图在空对象引用上调用虚拟方法'java.lang.Object android.content.Context.getSystemService(java.lang.String)'