首页 > 解决方案 > android.content.Context.getSystemService(java.lang.String)' 在空对象引用 Retrofit

问题描述

我正在尝试在我的 Kotlin Android 项目中使用 Retrofit 实现 API。此 API 尚未在项目的另一个活动中使用,并且可以正常工作。实际情况只是有点不同。我正在尝试在打开 web 视图的活动中实现此 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)”

标签: androidexceptionkotlinretrofit2

解决方案


推荐阅读