[英]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.