2017-10-11 293 views
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。

+0

觀察室數據庫不需要'ViewModelProviders'。從'@ Query'方法返回一個被動類型(例如'LiveData','Flowable')可以讓你觀察到變化。但是,您需要通過其他方法處理配置更改(例如'onRetainNonConfigurationInstance()',保留的片段)。最終,所有架構組件的「VieModel」系統都使用保留的片段。 – CommonsWare

回答

0

回答我自己的問題。

觀察房間數據庫是解決方案。感謝CommonsWare。

下面是完整的解決方案:

相關問題