@foonfyrick

Не получается передать текст из одного фрагмента в текствью другого?

Чето я запутался, всегда приходит this.tv_top must not be null.
Вроде так раньше передавал значения, а сейчас вспомнить не могу.
Экран же создается, и он отображается, но в методе override fun passData если проверить, то пишет что фрагмент даже не добавлен на экран, и вьюх не существует.

class BotFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_bot, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        this.setTargetFragment(TopFragment(),1)
        val tf = targetFragment as ITop

        button_bot.setOnClickListener {
            tf.passData("@@@@@@@@@@")
        }
    }

}


class TopFragment : Fragment(),ITop {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        return inflater.inflate(R.layout.fragment_top, container, false)
    }


    override fun passData(data: String) {
        this.tv_top.text = data
    }
}
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex

this.setTargetFragment(TopFragment(),1)
val tf = targetFragment as ITop

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

Войдите, чтобы написать ответ

Похожие вопросы