可能是一个菜鸟问题。如何为BehaviourSubject设置默认值。
我有一个具有2个不同值的枚举
enum class WidgetState {
HIDDEN,
VISIBLE
}
还有一个发出状态的行为主体
val widgetStateEmitter: BehaviorSubject<WidgetState> = BehaviorSubject.create()
写入视图逻辑时,我的发射器开始发射。但是默认情况下它是隐藏的。如何将默认值WidgetState.HIDDEN设置为发射器widgetStateEmitter
?
答案 0 :(得分:6)
有一个静态的BehaviorSubject.createDefault(T defaultValue)
工厂方法可以设置初始值。
defaultValue
参数的Javadoc说:
defaultValue
-将首先发射到任何Observer
的项目 只要BehaviorSubject
尚未观察到任何来自 其来源Observable
因此,您只需要按照以下步骤创建BehaviorSubject
:
val widgetStateEmitter: BehaviorSubject<WidgetState> =
BehaviorSubject.createDefault(HIDDEN)
答案 1 :(得分:1)
订阅该主题时,您可以使用Start with Operator
widgetStateEmitter.startWith(HIDDEN)
//continue your chain
答案 2 :(得分:0)
在构造函数或onCreate(或类似方法)中,只需调用widgetStateEmitter.onNext(HIDDEN)