Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在非碎片活动上使用ViewModelProviders.of()获取ViewModel? private void subscribeToModel(){ 最终MyViewModel模型=ViewModelProviders.of(本) .get(MyViewModel.class); //数据更改时更新列表 model.getItems().observe(这个,新的观察者(){ @凌驾 公共void onChanged(@Nullable List items){ //做些有用的事 } }); }_Android_Mvvm_Viewmodel - Fatal编程技术网

Android 如何在非碎片活动上使用ViewModelProviders.of()获取ViewModel? private void subscribeToModel(){ 最终MyViewModel模型=ViewModelProviders.of(本) .get(MyViewModel.class); //数据更改时更新列表 model.getItems().observe(这个,新的观察者(){ @凌驾 公共void onChanged(@Nullable List items){ //做些有用的事 } }); }

Android 如何在非碎片活动上使用ViewModelProviders.of()获取ViewModel? private void subscribeToModel(){ 最终MyViewModel模型=ViewModelProviders.of(本) .get(MyViewModel.class); //数据更改时更新列表 model.getItems().observe(这个,新的观察者(){ @凌驾 公共void onChanged(@Nullable List items){ //做些有用的事 } }); },android,mvvm,viewmodel,Android,Mvvm,Viewmodel,上述代码在“AppCompatActivity”或“FragmentActivity”上运行良好。 但是,它不适用于其他类型的活动(例如,对我来说:GvrActivity)。ViewModelProviders.of()应为“FragmentActivity” 是否有其他方法来观察DB 至于DB,我正在使用ROOM。回答我自己的问题 观察房间数据库是解决方案。谢谢你的公共软件 以下是完整的解决方案: private void subscribeToModel() { final MyVi

上述代码在“AppCompatActivity”或“FragmentActivity”上运行良好。 但是,它不适用于其他类型的活动(例如,对我来说:GvrActivity)。ViewModelProviders.of()应为“FragmentActivity”

是否有其他方法来观察DB


至于DB,我正在使用ROOM。

回答我自己的问题

观察房间数据库是解决方案。谢谢你的公共软件

以下是完整的解决方案:

private void subscribeToModel() {
    final MyViewModel model = ViewModelProviders.of(this)
            .get(MyViewModel.class);

    // Update the list when the data changes
    model.getItems().observe(this, new Observer<List<Item>>() {
        @Override
        public void onChanged(@Nullable List<Item> items) {
            // Do something useful
        }
    });
}
private void subscribeToModel(){
final DatabaseCreator DatabaseCreator=DatabaseCreator.getInstance();
LiveData itemLiveData=databaseCreator.getDatabase().itemDao().getAllLiveData();
if(itemLiveData!=null){
itemLiveData.observe(这个,新的观察者(){
@凌驾
公共void onChanged(@Nullable List items){
//做些有用的事
}
});
}
}

观察房间数据库不需要
ViewModelProviders
。从
@Query
方法返回反应类型(例如,
LiveData
Flowable
)可以让您观察更改。但是,您需要通过其他方法处理配置更改(例如,
onretainonconfigurationinstance()
,保留片段)。最后,所有体系结构组件的VieModel都使用保留片段。
private void subscribeToModel() {
    final DatabaseCreator databaseCreator = DatabaseCreator.getInstance();
    LiveData<List<Item>> itemLiveData = databaseCreator.getDatabase().itemDao().getAllLiveData();
    if(itemLiveData != null) {
        itemLiveData.observe(this, new Observer<List<Item>>() {
            @Override
            public void onChanged(@Nullable List<Item> items) {
                // Do something useful
            }
        });
    }
}