如何使用ContextWrapper类与subscribeWith
您好我已经使ContextWrapper
在单个地方进行翻新错误处理,并希望在subscribeWith
使用它。
abstract class CallbackWrapper<T : BaseResponse> : DisposableObserver<T>() { protected abstract fun onSuccess(t: T) override fun onNext(t: T) { //You can return StatusCodes of different cases from your API and handle it here. I usually include these cases on BaseResponse and inherit it from every Response onSuccess(t) } override fun onError(e: Throwable) { when (e) { is HttpException -> { val responseBody = (e as HttpException).response().errorBody() responseBody?.let { // view?.onUnknownError(getErrorMessage(it)) } } is SocketTimeoutException -> { // view?.onTimeout() } is IOException -> { // view?.onNetworkError() } else -> { e.message?.let { // view?.onUnknownError(it) } } } } override fun onComplete() { } private fun getErrorMessage(responseBody: ResponseBody): String { val jsonObject = JSONObject(responseBody.string()) return jsonObject.getString(("message")) } }
我正在尝试像下面这样使用它
ApiHelperImpl().doServerLoginApiCall(email, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(CallbackWrapper<LoginResponse> { })
我想要做一些像https://blog.mindorks.com/rxjava2-and-retrofit2-error-handling-on-a-single-place-8daf720d42d6有谁知道如何做到这一点?
你需要在CallbackWrapper<LoginResponse>
之后放置()
,并在kotlin
实例化一个抽象类,你必须将其称为: object: AbstractClass(...params){}
ApiHelperImpl().doServerLoginApiCall(email, password) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(object: CallbackWrapper<LoginResponse>() { override fun onSuccess(r: LoginResponse) { } })
- Android – ViewDataBinding.inflate不会膨胀嵌套的自定义视图
- AndroidStudio ExternalSystemException与kotlin 0.12.213
- Kotlin类没有从firebase获取它的布尔值
- 如何使用kotlin中的androidannotations库?
- Java.lang.ClassNotFoundException:没有找到类Kotlin
- Observable.combine在kotlin中的最新类型推断
- 用匕首在Kotlin中注入Generic类型2
- 生成错误:错误:执行任务':app:compileLightningLiteDebugKotlin'失败。 >编译错误
- 错误:错误:在类型为View的可为空的接收方上只允许使用safe(?。)或非null断言(!!)调用。