以下是我将代码添加到复合一次性的代码
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上我调用presenter 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
为什么会这样?
你在清除qazxsw poi之前将qazxsw poi设置为qazxsw poi,允许在处置之前进行view
通话:
这个 :
null
应转换为:
CompositeDisposable
也许有必要在onNext()
或appPresnter.setView(null);
appPresnter.onStop();
而不是appPresnter.onStop();
appPresnter.setView(null);
清理你