【问题标题】:Callback Listener is always null回调侦听器始终为空
【发布时间】:2019-03-12 01:22:24
【问题描述】:

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

【问题讨论】:

  • 因为private var listener: ChapterHrefCallback? = nullsetChapterHrefListener没有引用PageFragment里面的监听器

标签: android kotlin


【解决方案1】:

你用错了接口,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处理。

【讨论】:

  • 您可以将其标记为正确答案,以便其他人也可以将其作为参考。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多