Слушатель обратного вызова всегда нулевой - PullRequest
0 голосов
/ 12 марта 2019

Я не могу понять, почему слушатель в функции класса PageFragment> getChapterLink всегда равен нулю. Я уже установил слушателя в pageFragment. Отладка этого кода заняла у меня так много времени, но я больше не могу это исправить. Пожалуйста, помогите мне. Спасибо.

class ReaderFragment : Fragment() {
   private fun setPageRedirection() {
   val pageFragment = PageFragment()
   pageFragment.setChapterHrefCallbackListener(object: ChapterHrefCallback {
        override fun getChapterLink(href: String) {
           vPagerReaderPage.currentItem = pageAdapter!!.checkSpinePosition(href)
       }
   })
}

class PageFragment : Fragment(), ChapterHrefCallback {
   private var listener: ChapterHrefCallback? = null
      override fun getChapterLink(href: String) {
          Timber.d("HREF -----> $href")
          if (listener != null) {
              listener?.getChapterLink(href)
              Timber.d("HREF -----> " + listener?.getChapterLink(href))
   }
}

fun setChapterHrefListener(listener: ChapterHrefCallback?) {
   this.listener = listener
}

interface ChapterHrefCallback {
    fun getChapterLink(href: String)
}

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Вы используете интерфейс неправильно, PageFragment не нужно реализовывать ChapterHrefCallback, вам просто нужно вызвать метод в нем:

class PageFragment : Fragment() { // notice we remove the ChapterHrefCallback
   private var listener: ChapterHrefCallback? = null

   fun someFunctionHere() {
      //codes here...
      listener.getChapterLink("pass the link here")
      //codes again here...
   }
}

Тогда это будет обработано ReaderFragment.

0 голосов
/ 12 марта 2019

Это потому, что слушатель никогда не настроен. Вам нужно переместить эту функцию в класс PageFragment.

fun setChapterHrefListener(listener: ChapterHrefCallback?) {
    this.listener = listener
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...