android - 回调侦听器始终为空
问题描述
我无法弄清楚为什么类 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
.
推荐阅读
- ubuntu - Electron Builder-Ubuntu 中的 DMG
- nginx - 如何让 NGINX 重新解析 DNS?
- sql - 如果达到阈值,SQL SUM 停止
- vue.js - 在 vuetify 中找不到相关模块
- firebase - Firebase:相同的用户名
- matlab - 在 Manjaro 上安装 Matlab
- spring - GitLab CI CD runner 未加载配置文件的属性文件
- javascript - Jest Mock 返回未定义而不是数据
- git - 除非 Windows 服务用户拥有 Devops 帐户,否则 Jenkins 管道配置页面无法访问 GIT
- r - GGPlot 2色点按分类数据