2017-10-11 5 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를 관찰 할 수 있습니까?

DB는 ROOM을 사용하고 있습니다.

+0

:

여기에 전체 솔루션입니다. @ Query 메소드에서 반응 형 (예 :'LiveData','Flowable')을 반환하면 변경 사항을 볼 수 있습니다. 그러나 다른 접근법 (예 : onRetainNonConfigurationInstance(), 보유 된 프래그먼트)을 통해 구성 변경 사항을 처리해야합니다. 결국, 모든 Architecture Components의 'VieModel' 시스템은 유지 된 조각을 사용합니다. – CommonsWare

답변

0

내 질문에 답하는 중입니다.

방 데이터베이스를 관찰하는 것이 해결책입니다. CommonsWare에 감사드립니다. `ViewModelProviders`을 필요로하지 않는 방 데이터베이스를 관찰