Я использую rxjava 2 и пытаюсь использовать rxbus для передачи значения
код rxbus
public class SeasonTabSelectorBus {
private static SeasonTabSelectorBus instance;
private PublishSubject<Object> subject = PublishSubject.create();
public static SeasonTabSelectorBus instanceOf() {
if (instance == null) {
instance = new SeasonTabSelectorBus();
}
return instance;
}
public void setTab(Object object) {
try {
subject.onNext(object);
subject.onComplete();
} catch (Exception e) {
e.printStackTrace();
}
}
public Observable<Object> getSelectedTab() {
return subject;
}
}
Я устанавливаю значение как
SeasonTabSelectorBus.instanceOf().setTab(20);
Это код моей подписки
SeasonTabSelectorBus.instanceOf().getSelectedTab().subscribe(new Observer<Object>(){
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object o) {
if (o instanceof Integer) {
int seasonSelected =(int) o;
Log.e("season selected",seasonSelected+"");
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
Теперь я получаю значение при первом вызове, но при повторном вызове с другими значениями я не получаю обратный вызов.
SeasonTabSelectorBus.instanceOf().setTab(40);
SeasonTabSelectorBus.instanceOf().setTab(90);
SeasonTabSelectorBus.instanceOf().setTab(120);
SeasonTabSelectorBus.instanceOf().setTab(290);