视图模型布尔值未设置

huangapple 未分类评论43阅读模式
英文:

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&#39;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>


huangapple
  • 本文由 发表于 2020年7月24日 04:36:18
  • 转载请务必保留本文链接:https://java.coder-hub.com/63062746.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定