0
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
}
});
}
上面的代碼在'AppCompatActivity'或'FragmentActivity'上運行良好。 但是,它不適用於其他類型的活動(例如,對於我:GvrActivity)。 ViewModelProviders.of()期待'FragmentActivity'。如何在非FragmentActivity上使用ViewModelProviders.of()獲取ViewModel?
有沒有另一種觀察數據庫的方法?
至於DB,我正在使用ROOM。
觀察室數據庫不需要'ViewModelProviders'。從'@ Query'方法返回一個被動類型(例如'LiveData','Flowable')可以讓你觀察到變化。但是,您需要通過其他方法處理配置更改(例如'onRetainNonConfigurationInstance()',保留的片段)。最終,所有架構組件的「VieModel」系統都使用保留的片段。 – CommonsWare