Androidで新しいアーキテクチャコンポーネントを使用しようとしていますが、これまでのところうまくいきました。しかし、私は建築上の問題に遭遇しました。AndroidアーキテクチャのコンポーネントViewModelのコンテキストの問題
A
,B
、およびC
のようなフラグメントをホストするMainActivity
があります。今までは、ViewModel(VM)が必要なときはいつも、MainActivity
というコンテキストで(MyViewModel vm = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
のように)フェッチしました。今、このことを考慮してください。
- 断片
C
は、ユーザーがいくつかの値を選択することができますし、に書き込みます。 - フラグメント
A
はフラグメントC
を使用してユーザーに値を選択させ、次にA
は値をから直接読み取り、そのUIに表示します。 - フラグメント
B
は、フラグメントA
と同じ方法を使用します。
問題が以来MainActivity
のコンテキストで常にあること、であるフラグメントA
がB
前に使用されている場合は、値がまだ利用できるようになります、とB
は、いくつかの古いデータが表示されます。
私が見る最も明白な解決策は、それぞれA
とB
の文脈でを作成することです。しかし、私はフラグメントC
がそれらをにアクセスさせる方法を理解できません。
私はまた、フラグメントC
の文脈でを作成することもできますが、それは、私は素敵な解決策だとは思わないC
のインスタンスを作成するフラグメントA
とB
を必要とします。
第3の解決策は、現時点でのアプローチを維持し、適切な場合にのデータをクリアすることですが、それも面倒です。
これについてはどのような方法が最適ですか?
このような簡単な解決策 - ありがとう! –