首页 > 解决方案 > 回调侦听器始终为空

问题描述

我无法弄清楚为什么类 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)
}

标签: androidkotlin

解决方案


您错误地使用了接口,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.


推荐阅读