Далее не вызывается для PublishSubject в Android, rxjava? - PullRequest
0 голосов
/ 07 мая 2018

Я использую 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);

1 Ответ

0 голосов
/ 07 мая 2018

Вы получаете только первый, потому что после публикации (subject.onNext(object)) вы звоните subject.onComplete(). Просто удали эту строку.

...