Я пытаюсь реализовать API с Retrofit в моем проекте Kotlin Android. Этот API еще используется в проекте в другой деятельности, и он работает. Реальная ситуация немного отличается. Я пытаюсь реализовать этот API в операции, в которой я открываю веб-представление и при обратном вызове JS я вызываю экземпляр модификации и API.
В этом случае API не запускается, и я получаю сообщение об ошибке:
Попытка вызвать виртуальный метод 'java.lang.Object android.content.Context.getSystemService (java.lang.String)' для ссылки на пустой объект
Есть идеи, связанные с этой проблемой?
Спасибо
Я проверил все объекты, связанные с API, чтобы предотвратить все нулевые указатели.
Я также пытался вызвать API на UiThread
, но ничего не помогло.
//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)' для ссылки на пустой объект