Изменение title в ToolBar вне OnCreate

Задумка такова, что при пролистывании viewpager'ом, будет меняться заголовок в ToolBar. То есть все вписано должно быть в обработчике перелистывания viewpager. Но изменить заголовок у меня получается только лишь внутри OnCreate

setSupportActionBar(findViewById(R.id.toolbar_Main))
toolbar_Main.title = "Заголовок"

В выносных функциях toolbar_Main просто не виден, поэтому невозможно реализовать подобным кодом идею.

Как это возможно обойти? Заранее спасибо. Код на Java тоже пойдет

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Andrew

Есть несколько вариантов:

  1. Делаем интерфейс:

    interface DataUpdater {
    fun update(title:String,subtitle:String)
    }
    

и используя его мы сможем из фрагмента передать данные в родительскую активность. Подключаем в активности:

class HomeScreen : AppCompatActivity(), DataUpdater{
...

override fun update(title: String, subtitle: String) {
      // сетим заголовок 
}
...
}

подключаем к фрагменту:

class SomeClass: Fragment(){
lateinit var updateUI: DataUpdater
...
override fun onAttach(context: Context) {
        super.onAttach(context)
        if (context is DataUpdater) {
            updateUI = context
        }
}

}

и все.

  1. Второй вариант:

    (activity as YourActivity).supportActionBar?.title = getString(R.string.your_title)
    

Так же есть подобные вопросы 1, 2 и 3.

→ Ссылка