Я занимаюсь разработкой приложения для Android и сталкиваюсь с проблемой передачи данных, когда пользователь нажимает кнопку «назад» (это означает, что событие onBackPress запускается). Я хотел запустить событие с наблюдателем с помощью viewmodel, но это не работает. вот так.
// First Fragment
private val viewModel: MyViewModel by bindViewModel()
viewModel.currencyVal.observe { state ->
Timber.i("Event fired")
}
...
// Second fragment which was displayed with fragment transaction. This code is when user pressed back button. like override fun onBackPressed
private val viewModel: MyViewModel by bindViewModel()
viewModel.currencyVal(5)
// MyViewModel
...
val currencyVal = MutableLiveData<Int>()
...
fun setCurrencyVal(currencyVal: Int) {
currencyVal.value = currencyVal
}
Вот функция bindViewModel
protected inline fun <reified T : ViewModel> bindViewModel(
crossinline initializer: T.() -> Unit = {}
): Lazy<T> = nonConcurrentLazy {
ViewModelProviders.of(requireActivity())
.get(T::class.java)
.also { it.initializer() }
}
А также передача данных через транзакцию фрагмента не работает.
Может кто-нибудь предложить, как передать данныекогда пользователь нажимает кнопку «Назад» во FragmentActivity?
Спасибо.