Я пытаюсь следовать рекомендациям Android и использовать последние рекомендованные компоненты архитектуры.Вы можете увидеть мою попытку здесь: https://github.com/randroid88/TodayILearned
В настоящее время возможности приложения очень ограничены.
- Имеется база данных для локального хранения записей журнала.
- Один фрагмент, 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 для Activityкак объяснено здесь в этом блоге ?
Какова лучшая практика здесь?