Где обновить элемент пользовательского интерфейса, если фрагмент в основной деятельности - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть это действие, которое устанавливает фрагмент. После коммита я хочу обновить 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

Так, где я могу безопасно обновить некоторый элемент интерфейса на фрагменте?

1 Ответ

0 голосов
/ 26 апреля 2019

Я предполагаю, что свойство textMainLog в вашем MainFragment установлено в качестве lateinit.

Обратите внимание, что вы сразу устанавливаете текст textMainLog сразу после фиксации фрагмента. Перед настройкой убедитесь, что ваш фрагмент прикреплен, его разметка полностью надута и все необходимые ссылки на представления инициализированы перед установкой свойств представлений.

...