nekocode/create-android-kotlin-app

继承BaseViewInterface的疑问

berial opened this issue · 5 comments

我在自己写的Presenter里定义了ViewInterface并在其中定义了一系列方法,在Fragment中实现了ViewInteface并重写了方法,但是所有的方法都不在main线程里,而是在一个RxComputationThreadPool中,请问该如何解决

@berial ,能提供更详细的问题描述么(例如代码)

class RegisterFragment: BaseFragment(), RegisterPresenter.ViewInterface {

    overide fun setPhoneError(error: String) {
        etPhone.error = error 
    }
}

class RegisterPresenter(val view: ViewInterface): Presenter(view) {

    interface ViewInterface {
        fun setPhoneError(error: String)
    }

    // 获取验证码
    fun getPcode() {
        ...
        view.setPhoneError("手机号错误")
    }
}

@berial 你在哪里调用的 getPcode() ?感觉是你使用 RxJava 有误,没有在 UI 线程进行订阅。

还有就是,新的版本中的 Presenter 已经改为使用 Fragment 实现了,你的代码透露了你不是使用 0.8.x 版本的 kotgo。

使用 Fragment 构建 Presenter

卧槽果然,之前是在onViewCreated里写的:
RxView.clicks(btnGetPcode)
.debounce(150, TimeUnit.MILLISECONDS)
.subsribe { presenter.getPcode() }

把subsribe改成onUI就妥了

OK~