С последней библиотекой ViewModel стало еще проще создавать ViewModel и совместно использовать его между фрагментами Activity:
Сначала добавьте зависимости activity-ktx и fragment-ktx в build.gradle вашего модуля приложения:
dependencies {
// For Activity
def activity_version = "1.2.0-alpha04"
implementation "androidx.activity:activity-ktx:$activity_version"
// For Fragment
def fragment_version = "1.3.0-alpha04"
implementation "androidx.fragment:fragment-ktx:$fragment_version"
}
Предположим, ваша ViewModel имеет вид:
class MyViewModel : ViewModel() { }
Затем в вашей деятельности:
class MyActivity : AppCompatActivity() {
// Use the 'by viewModels()' Kotlin property delegate
// from the activity-ktx artifact
val model: MyViewModel by viewModels()
}
И тогда ваши фрагменты будут иметь:
class MyFirstFragment : Fragment() {
// Use the 'by activityViewModels()' Kotlin property delegate
// from the fragment-ktx artifact
private val model: MyViewModel by activityViewModels()
}
class MySecondFragment : Fragment() {
// Use the 'by activityViewModels()' Kotlin property delegate
// from the fragment-ktx artifact
private val model: MyViewModel by activityViewModels()
}