0

Android Architecture Componentsを実装しています。あなたのFragmentがUIを変更するためにLiveDataを観察している次のような場合を想像してください。ユーザーはアプリケーションを最小限に抑え、状態は(私の場合はリポジトリから)変更されます。 FragmentObserverは、Fragmentが表示されないため、変更されません。しかし、ユーザーがアプリに戻ると、新しい状態が発生しません。状態が再び変更された場合(Fragmentが表示されている間)、Observerは変更を受け取ります。フラグメントが再び表示されたときに更新を強制する方法はありますか?フラグメント内のLiveData Observerを再度表示した後に変更を受け取るように強制しますか?

override fun onActivityCreated(savedInstanceState: Bundle?) { 
    super.onActivityCreated(savedInstanceState) 

    vm = ViewModelProviders.of(this, viewModelFactory).get(MyViewModel::class.java) 
    vm.getStatus()?.observe(this, Observer<MyRepository.Status> { status -> 
     if (status != null) { 
      when (status) { 
       NONE -> setNoneUI() 
       LOADING -> setLoadingUI() 
       CONTENT -> setContentUI() 
       ERROR -> setErrorUI() 
      } 
     } 
    }) 
} 

答えて

1

それが再び表示されているとき、このvideoで説明するとhereを説明するように実際にあなたの活動は、LiveDataから最新の状態を受け取る必要があります。

常に最新のデータまで:ライフサイクルが非アクティブになると、再びアクティブになると最新のデータを受信します。たとえば、背景にある のアクティビティは、前景の に戻った直後に最新のデータを受け取ります。

私は自分のアプリケーションでこれをテストしましたが、説明したとおりに動作します。したがって、アプリケーションに別のエラーがあるはずです。LiveDataをリポジトリクラスから正しく設定していますか?たぶん別のスレッド/ postValueの問題?

関連する問題