在我的类Activity
中,我创建了一个Fragment
。为了检测片段是否已准备就绪,我的片段中isInitialized
了一个布尔标志。现在我想在我的活动中运行一些代码,为此我必须确保片段已准备就绪并且isInitialized
为真。现在我写了一些 RxJava 代码来响应我Activity
中变量的变化
Observable.just(fragment.isInitialized)
.filter { _ -> true }
.subscribe { load() }
如果我运行我的应用程序,即使isInitialized
为 false,也会调用方法加载。我的代码有什么问题?
如果isInitialized
是一个基本字段,则无法对这样的更改做出反应。请改用BehaviorSubject<Boolean>
在您的片段中:
BehaviorSubject<Boolean> isInitialized = BehaviorSubject.create();
在初始化代码中的某个地方:
isInitialized.onNext(true);
在加载代码中:
fragment.isInitialized
.filter { _ -> true }
.observeOn(Schedulers.io())
.doOnNext { load() }
.observeOn(AndroidSchedulers.mainThread())
.subscribe { /* loaded */ }
假设isInitialized是一个布尔值,你需要过滤该值。目前,对于每种情况,您都返回 true。
filter { it }