【发布时间】:2019-04-17 09:55:00
【问题描述】:
以下是我将 observable 添加到复合一次性用品的代码
compositeDisposable.add(retrofit.create(APIService.class).getHomePageItems(homePageRequestParam.buildPost(), homePageRequestParam.build())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.onTerminateDetach()
.subscribeWith(new DisposableObserver<HomePageResult>() {
@Override
public void onNext(HomePageResult result) {
appView.onHomePageResponse(result);
}
@Override
public void onError(Throwable e) {
appView.onHomePageError();
}
@Override
public void onComplete() {
}
}));
在 Fragment destroy 时,我正在调用演示者 stop() 方法,如下所示。
@Override
public void onDestroy() {
super.onDestroy();
appPresnter.setView(null);
appPresnter.onStop();
}
如下所示清除和处理演示者内部的可观察对象
@Override
public void onStop() {
compositeDisposable.dispose();
compositeDisposable.clear();
}
但是即使片段不可用并且我得到空指针异常,仍然会调用 onNext。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
为什么会这样?
【问题讨论】:
-
尝试将
appPresnter.setView(null); appPresnter.onStop();移动到onDestroy()中的超级线上方
标签: android android-fragments observable rx-java2 android-mvp