Activity.setTitle не работает в блоке runOnUiThread - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно получить объект Note() из базы данных моей комнаты из фонового потока и установить заголовок заметки в качестве заголовка моей активности, но title = note.title не работает, и я вижу имя моего приложения на панели инструментов.Я также пробовал supportActionBar?.title и toolbar.title, но ни один из них не решил проблему.Я уверен, что база данных дает мне правильные данные, и я не знаю, в чем проблема.Любая помощь приветствуется.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_show_note)
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
}

override fun onResume() {
    super.onResume()
    intent.extras?.also {
        val id = it.getInt(ID_EXTRA)
        Thread(Runnable {
            note = db.noteDao().getNote(id)
            runOnUiThread {
                title = note.title
                tvShowNote.text = note.note
                tvShowTime.text = note.time.format()
            }
        }).start()
    }
}

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы должны установить что-то вроде этого.

supportActionBar!!.title = title //your_title_put_here

Вы пробовали то же самое без runOnUiThread.

0 голосов
/ 06 февраля 2019

setTitle - это метод панели действий, вам нужно использовать экземпляр Actionbar для установки его свойства.попробуйте использовать приведенный ниже код после того, как вы установили свою панель инструментов в качестве панели поддержки действий.

val actionBar = supportActionBar
actionBar!!.title = "your_title"
...