将原始 Observable 平面化为新 Observable 后如何收听?

how to listen to the original observable after it is flatmaped to a new observable?

public Observable<Void> onFabClicked() {
    return RxView.clicks(a_button);
}

{ 
    view.onOutBoundBtClicked() 
        .observeOn(computationScheduler) 
        .map(new Func1<Void, ViewModelAction>() {
              @Override public ViewModelAction call(Void aVoid) { 
                    return new OutboundInputFieldTappedAction(); 
              } 
        }).mergeWith(view.onFabClicked().flatMap(new Func1<Void, Observable<ListOfResult>>() {
                @Override
                public Observable<ListOfResult> call(Void avoid) {
                    return listRepository.getListResult("UK",
                                    "en-GB",
                                    ).toObservable();
                }
            }).map(new Func1<ListOfResult, ViewViewModelAction>() {
                @Override
                public ViewViewModelAction call(ListOfResult ListOfResult) {

                    return new ListOfResultsReceivedAction(ListOfResult);
                }
            }))
    .mergeWith(view.onFabClicked()
    .observeOn(computationScheduler)
    .map(new Func1<Void, ViewModelAction>() {
                @Override
                public ViewModelAction call(Void aVoid) {
                    return new SearchPanelAnimationAction();
                }
            }))

我有一个来自 RxView.clicks(a_button) 的 observable1,如何通过单击 observable1 创建另一个 observable2,然后将 observable1 和 observable2 发送给同一个订阅者?我尝试了将 observable1 转换为 ovservable2 的平面图,但从未听说过 observalbe1,代码是

{
    view.onOutBoundBtClicked().observeOn(computationScheduler).map(new Func1() {
        @Override
        public ViewModelAction call(Void aVoid) {
            return new OutboundInputFieldTappedAction();
        }
    }).mergeWith.

,为什么我总是 return XXXAction 是因为我会更改 viewModel 中的一些字段,我会使用

    .withLatestFrom(viewModels, new Func2() {
    @Override
    public ActivityViewModel call(ViewModelAction action, ActivityViewModel activityViewModel) {
        return action.modifyViewModel(activityViewModel);
    }

因此,每当视图模型中发生任何更改时,我都会发出一个事件并对其执行一些操作,谢谢,伙计们。

您需要创建一个共享的可观察字段,并公开它而不是直接返回 RxView.clicks()

Observable<Void> fabClicks;

public void onCreate(Bundle bundle) {
    ...

    fabClicks = RxView.clicks(a_button).share();
}

public Observable<Void> onFabClicked() {
    return fabClicks;
}