如何在非 FragmentActivity 上使用 ViewModelProviders.of() 获取 ViewMod


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'。

有没有另一种方法来观察数据库?

至于数据库,我正在使用ROOM。

回答我自己的问题。

观察房间数据库是解决方案。谢谢共享资源。

以下是完整的解决方案:

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
            }
        });
    }
}

相关内容

  • 没有找到相关文章

最新更新