Ошибка инициализации textEdit при вызове функции фрагмента из активити
При выполнении функции из активити не успевает пройти инициализация полей фрагмента. Функция вызывается из пункта меню (в тулбаре)
val myFragment = FirstFragment()
supportFragmentManager
.beginTransaction()
.add(id.nav_host_fragment_content_main, myFragment , "MyFragment")
.commit()
myFragment.date1.setText("30.04.2018")
Ответы (1 шт):
Автор решения: Svetl9chok
→ Ссылка
Как сказано в комментарии под твоим вопрос, нужно при передаче данных между activity и fragment стоит положить данные в bundle, а там уже в методе OnViewCreated(что бы гарантировать что view создастся) достать и вставить в нужное тебе поле, приведу пример
Код во фрагменте
companion object {
private const val DATA = "data"
fun newInstance(data: String): Fragment = FirstFragment().apply {
arguments = bundleOf(DATA to data)
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireArguments().getString(DATA)?.let { data ->
//to do
}
}
код во активити
val myFragment = FirstFragment.newInstance(data)
supportFragmentManager
.beginTransaction()
.replace(id.nav_host_fragment_content_main, myFragment , "MyFragment")
.commit()