Внутри моего Fragment
я инициализирую ViewModel
, используя ViewModelProviders
.Я хочу, чтобы он взял Activity
, если не null
, то в противном случае сам (Fragment
).
private val viewModel: MainViewModel by lazy {
ViewModelProviders.of(activity ?: this).get(MainViewModel::class.java)
}
Ни одна из следующих функций не может быть вызвана с предоставленными аргументами.
- из (Фрагмент), определенный в androidx.lifecycle.ViewModelProviders
- из (FragmentActivity), определенный в androidx.lifecycle.ViewModelPro
Кажется,язык не позволяет мне вызывать конфликтующие сигнатуры методов (между of(Activity)
и of(Fragment)
. (Это может быть понятно, возможно, компилятор должен ссылаться только на один метод и не может ссылаться на оба на одной и той же строке.) Isчто так?
Теперь мне нужно использовать
activity?.let {
ViewModelProviders.of(it).get(MainViewModel::class.java)
} ?: run {
ViewModelProviders.of(this).get(MainViewModel::class.java)
}
Есть ли лучший способ сделать это?