Как можно в Activity получить доступ к функции someFunction(), которые находятся в этой ViewModel, если эта ViewModel используется во Fragment?
Код ExampleViewModel.kt:
class ExampleViewModel(private val repo: ApiRepository) : ViewModel() {
private val mutableLiveData = MutableLiveData<Resource<List<Item>>>()
lateinit var item: UserItem
fun getLiveData(): LiveData<Resource<List<Item>>> {
return mutableLiveData
}
fun someFunction() {
//...
}
//...
}
Код ExampleFragment.kt:
class ExampleFragment : Fragment() {
private val exampleViewModel: ExampleViewModel by viewModels { ViewModelsProviderFactory }
override fun onCreateView(
//...
setObservers()
}
private fun setObservers() {
exampleViewModel.getLiveData().observe(viewLifecycleOwner, {
//..
}
Ну а в MainActivity.kt нужно использовать функцию someFunction() из ExampleViewModel :
class MainActivity : AppCompatActivity() {
private var exampleFragment: Fragment = ExampleFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//..
// ?? использовать например тут: someFunction() из ExampleViewModel , либо в другом фрагменте
}
Проблема в том, что использовать функции, которые находятся во ViewModel я могу только из ExampleFragment, а из любого другого фрагмента или активности, либо другого класса не получается.