У меня есть это действие, которое устанавливает фрагмент. После коммита я хочу обновить textView так:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
settingsManager = SettingsManager(this)
var mainFragment = MainFragment()
mainFragment.arguments = intent.extras
val transaction = fragmentManager.beginTransaction()
transaction.replace(R.id.main_view, mainFragment, "MAIN")
transaction.commit()
fragmentManager.executePendingTransactions()
//initialize timer for the first time
logMain("hello")
}
fun logMain(message: String) {
val mainFragment = fragmentManager.findFragmentByTag("MAIN") as MainFragment
mainFragment.textMainLog.setText(mainFragment.textMainLog.text.toString() + message + "\n")
var scrollAmount = mainFragment.textMainLog.getLayout().getLineTop(mainFragment.textMainLog.getLineCount()) - mainFragment.textMainLog.getHeight()
// if there is no need to scroll, scrollAmount will be <=0
if (scrollAmount > 0)
mainFragment.textMainLog.scrollTo(0, scrollAmount)
else
mainFragment.textMainLog.scrollTo(0, 0)
}
Но я получаю следующее исключение:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ar.smshub/com.ar.smshub.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit property textMainLog has not been initialized
Так, где я могу безопасно обновить некоторый элемент интерфейса на фрагменте?