1

Android のベスト プラクティスに従い、最新の推奨アーキテクチャ コンポーネントを使用しようとしています。これまでの私の試みは、https ://github.com/randroid88/TodayILearned で確認できます。

現在、アプリの機能は非常に限られています。

  • ジャーナルエントリをローカルに保存するための Room データベースがあります。
  • すべてのエントリをリストする1 つのフラグメントHomeFragment 。
  • 新しいエントリを作成する別のフラグメントEntryEditorFragment 。
  • リポジトリ経由でデータを更新するViewModel、 EntryViewModel 。

問題は、現在 HomeFragment だけが EntryViewModel にアクセスできることです。

したがって、現在の設計では、新しいエントリ テキストを EntryEditorFragment から HomeFragment に引数バンドルを介して渡し (新しいナビゲーション アーキテクチャ コンポーネントのSafeArgsを使用)、次に HomeFragment が EntryViewModel を介して新しいエントリを作成します。

val safeArgs = HomeFragmentArgs.fromBundle(arguments!!)
    savePossibleNewEntry(safeArgs.entryText)

private fun savePossibleNewEntry(entryText: String) {
    entryViewModel!!.insert(EntryCreator().create(entryText))
}

これは気分が悪い。

EntryViewModel にも EntryEditorFragment へのアクセス権があればもっと良いでしょうか?

これを達成するには、このブログで説明されているように、ViewModel のスコープをアクティビティに設定する必要がありますか?

ここでのベストプラクティスは何ですか?

4

1 に答える 1