Ошибка компиляции RxJava2 "не удается найти метод символа body()"
Я получил ошибку компиляции в этой части кода
mCompositeDisposable.add(
Flowable.just(Boolean.TRUE)
.flatMap( ignored ->
service.getPosts(offset,limit, PreferencesUtils.getAccessTokenKey()) )
.subscribeOn(Schedulers.io())
.doOnNext(response -> {
if (!response.isSuccessful()) throw new IllegalAccessException();
})
.retryWhen( error -> error.flatMap( f -> {
if(f instanceof IllegalAccessException)
return Helper.refreshToken();
else
return Flowable.error(f);
}))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
successResponse -> {
if (!successResponse.body().isEmpty()) {
mView.showNewsFeedItems(successResponse.body());
}
},
failResponse -> { mView.showError(); }
));
Эта строка кода IDE хорошо распознается и не выдает никаких исключений или предупреждений. SuccessResponse имеет тип Response<List<Object>>
но компилятор не думает так хорошо и дает мне error: cannot find symbol method body()
Я не могу найти одинаковые вопросы и ответы, как решить эту проблему. Буду очень признателен за любую информацию по этой проблеме!
if (!successResponse.body().isEmpty()) {
mView.showNewsFeedItems(successResponse.body());
}
Обновить:
Все отлично работает, когда я использую Observer (с Observable), но это дорого
.subscribe(new Observer<Response<List<NewsFeed>>>() { // lambda doesnt work properly here (in progress)
@Override public void onSubscribe(Disposable s) {}
@Override public void onNext(Response<List<NewsFeed>> feeds) {if(!feeds.body().isEmpty()) mView.showNewsFeedItems(feeds.body());}
@Override public void onError(Throwable e) {}
@Override public void onComplete() {}
});
1 ответ
Попробуйте использовать Single.just(), если вам нужна эта эмиссия. Это вернет вам Disposable, который можно добавить в CompositeDisposable. Подпишитесь на текучую возвратную подписку, а не одноразовую