簡體   English   中英

回調偵聽器始終為空

[英]Callback Listener is always null

我無法弄清楚為什么類 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)
}

您錯誤地使用了接口, 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處理。

這是因為從未設置過偵聽器。 您需要在PageFragment類中移動此函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM