2014-10-20 40 views
0

我有两个片段,每个都有发布主题,在onResume()初始化时调用onNext(true)。我想结合这两个主题,并在他们都返回true时调用第三类中的某些方法。我需要使用Observable吗?我无法找到合适的操作,因为这些是主题,所以压缩不起作用。我如何结合这些?如何观察碎片初始化RxJava/RxAndroid?

回答

5

一个主题既是Observer也是Observable。因此,即使对于主题,您也可以使用zip运算符。

你可以做什么,正在使用zipfilter运营商。

Subject<Boolean, Boolean> sub1 = PublishSubject.create(); 
    Observable<Boolean> filter1 = sub1.filter((e) -> e); // filter only event is true 

    Subject<Boolean, Boolean> sub2 = PublishSubject.create(); 
    Observable<Boolean> filter2 = sub2.filter((e) -> e); // filter only event is true 


    Observable.zip(filter1, filter2, (one, two) -> true).subscribe() 

如果你只是想知道如果每个片段被初始化,也许你可以发出碎片,而不是得到合同,如:如果视图发出的,那么它的准备。

class Fragment1 { 
    Subject<Fragment, Fragment> sub1 = PublishSubject.create(); 

    public void onResume() { 
     sub1.onNext(this);     
    } 

} 

class Fragment2 { 
    Subject<Fragment, Fragment> sub1 = PublishSubject.create(); 

    public void onResume() { 
     sub1.onNext(this);     
    } 

} 


class MyView { 

    public onCreate() { 
     Observable.zip(sub1, sub2, (one, two) -> true).subscribe((b) -> // dosomething) 
    } 


} 
+0

tnx这工作完美无缺:) – ddog 2014-10-20 17:11:34