java - ViewModel 观察扩展活动
问题描述
对于我的应用程序,我有处理大部分样板代码的核心类的基本实现。两个这样的实现是BaseActivity
和BaseViewModel
。简单的BaseViewModel
有 getter 和 setterSingleLiveEvent<Boolean>
可以通过以下方式访问BaseActivity
:
BaseActivity
:
public class BaseActivity extends AppCompatActivity {
/* Some random variables */
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BaseViewModel viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);
// Observe loading state
viewModel.getLoadingEvents().observe(this, showLoading -> {
if (showLoading != null) {
showLoadingState(showLoading);
}
});
// Observer error events
viewModel.getErrorEvents().observe(this, throwable -> {
if (throwable != null) {
Alerts.displayError(this, throwable.getLocalizedMessage());
}
});
}
/* Some random methods */
}
现在我有其他活动(例如MainActivity
)从BaseActivity
. 我假设由于MainActivity
扩展BaseActivity
了上述生命周期观察者,它也会自动申请MainActivity
。然而,事实并非如此。只有当我将观察者MainActivity
移到BaseActivity
基本上,我要问的是如何将观察者逻辑保留在 BaseActivity 中并使其正确应用于所有扩展类?
解决方案
推荐阅读
- jquery - Jquery UI 日期选择器空白
- python - Python,参数解析。-opt1 -part-of-opt1 怎么样
? - mailchimp - 如何使用 Mailchimp API 获取用户所属的所有列表?
- visio - Visio .vsdx 不需要的行为:为什么用户定义的形状值从 1.00E-7 被截断为 0.00E0?
- scala - sbt ivy2:从“编译”中找不到配置“主”
- c# - MVVM:引发从业务层到表示到请求显示的异常
- node.js - 使用 node.js 通过条件向多个主题发送 FCM 通知的正确语法是什么?
- algorithm - 求两个值为 2 的整数之间的异或值
- c - 读取脚本输出变量
- azure - 如何升级现有的云服务项目以使用 Azure SDK 3.0?