英文:
Viewmodel boolean not set
问题
private void enableWidget(final Context context) {
if (featureFlagDisposable != null) {
featureFlagDisposable.dispose();
}
featureFlagDisposable = Single.fromCallable(() -> {
featureFlagsConnector = FeatureFlagsConnector.getInstance(context);
featureFlagsConnector.blockingFetchFeatureFlags();
return featureFlagsConnector.isFeatureFlagEnabled(FeatureFlagName.WIDGET_FLAG.toString());
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::initViewModel);
}
private void initViewModel(boolean isFeatureFlagEnabled) {
if (isFeatureFlagEnabled) {
if (viewModel == null) {
viewModel = ViewModelProviders.of(this).get(ViewModel.class);
viewModel.getShowWidget().observe(this, this::setWidgetVisibility);
viewModel.setSchedulingEnabled(true);
}
viewModel.setSchedulingEnabled(true);
} else if (viewModel != null) {
viewModel.getShowWidget().removeObservers(this);
viewModel = null;
setWidgetVisibility(false); // don't show rd widget
}
}
class ViewModel(app: Application) : AndroidViewModel(app) {
var schedulingEnabled: Boolean = false
init {
DataStore.initialize(getApplication())
ServicesRxJava2.init(getApplication())
val repository = ServicesRxJava2.getInstance().repository
observeLoggedEmployee()
}
...
}
在上面的代码中,我正在将 setSchedulingEnabled
设置为 true
。但是在 viewModel 中,布尔值仍然保持为 false
。有一件事是,这是在父 Activity 中,它是用 Java 编写的。ViewModel 类是用 Kotlin 编写的。不确定是否会引起任何问题。
我在这里明确将布尔值设置为 true
,但 viewModel 根本没有设置它。为什么会发生这种情况?
<details>
<summary>英文:</summary>
private void enableWidget(final Context context) {
if (featureFlagDisposable != null) {
featureFlagDisposable.dispose();
}
featureFlagDisposable = Single.fromCallable(() -> {
featureFlagsConnector = FeatureFlagsConnector.getInstance(context);
featureFlagsConnector.blockingFetchFeatureFlags();
return featureFlagsConnector.isFeatureFlagEnabled(FeatureFlagName.WIDGET_FLAG.toString());
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::initViewModel);
}
private void initViewModel(boolean isFeatureFlagEnabled) {
if (isFeatureFlagEnabled) {
if (viewModel == null) {
viewModel = ViewModelProviders.of(this).get(ViewModel.class);
viewModel.getShowWidget().observe(this, this::setWidgetVisibility);
viewModel.setSchedulingEnabled(true);
}
viewModel.setSchedulingEnabled(true);
} else if (viewModel != null) {
viewModel.getShowWidget().removeObservers(this);
viewModel = null;
setWidgetVisibility(false); // don't show rd widget
}
}
class ViewModel(app: Application) : AndroidViewModel(app) {
var schedulingEnabled: Boolean = false
init {
DataStore.initialize(getApplication())
ServicesRxJava2.init(getApplication())
val repository = ServicesRxJava2.getInstance().repository
observeLoggedEmployee()
}
...
}
In the above code, I am setting the setSchedulingEnabled to true. However in the viewModel boolean continues to remain false. One thing is that this is in the parent Activity which is in Java. The ViewModel class is written in Kotlin. Not sure if that is causing any issue.
I have explicitly set the boolean here to true but viewmodel does not have it set at all. Why is this happening?
</details>
专注分享java语言的经验与见解,让所有开发者获益!
评论