You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在导入的Rich Text Editor库模块中调用主应用的类方法?

解决方案

核心思路是通过接口回调解耦库模块和主应用,避免库直接依赖主应用代码产生循环依赖问题,实现步骤如下:

步骤1:在Rich Text Editor库中定义回调接口

首先在库模块中新增公共回调接口,用于跨模块传递事件:

// 放在库模块的WebAppInterface同级别目录下
interface OnWebActionCallback {
    fun onVideoTimestampClick(timestamp: Float)
}

步骤2:修改库中的WebAppInterface类

调整构造函数传入回调实例,收到JS触发的事件时直接调用回调方法即可:

class WebAppInterface(
    var mContext: Context,
    // 新增回调参数
    private val callback: OnWebActionCallback
) {
    // 注意:方法名要和JS调用的保持一致,你原来JS里调用的是showToast,这里要把方法名从getString改成showToast,否则触发不了
    @JavascriptInterface
    fun showToast(text: String) {
        // 把拿到的文本转成Float时间戳,调用回调
        val timestamp = text.toFloatOrNull() ?: return
        callback.onVideoTimestampClick(timestamp)
    }
}

注意:这里要和你的JS代码匹配,JS中调用的是window.Android.showToast(text),所以Java/Kotlin层的@JavascriptInterface注解的方法名必须是showToast,之前的getString方法名不匹配,会导致调用失败。

步骤3:主应用VideoViewingFragment实现回调接口

主应用的Fragment实现库中定义的回调接口,在回调方法中调用自身的startsomething逻辑:

// 让Fragment实现库中的OnWebActionCallback接口
class VideoViewingFragment : Fragment, OnWebActionCallback {

    // ...你的原有代码...

    fun startsomething(vidTimestamp: Float){
        youTubePlayerView.getYouTubePlayerWhenReady(object: YouTubePlayerCallback{
            override fun onYouTubePlayer(youTubePlayer: YouTubePlayer) {
                youTubePlayer.seekTo(vidTimestamp)
            }
        })
    }

    // 实现回调接口的方法
    override fun onVideoTimestampClick(timestamp: Float) {
        // 直接调用你现有的逻辑即可
        startsomething(timestamp)
    }

    // 在你初始化WebView、创建WebAppInterface的位置,传入当前Fragment实例作为回调
    private fun initWebView() {
        // ...你的WebView初始化逻辑...
        // 原来的写法是 webView.addJavascriptInterface(WebAppInterface(requireContext()), "Android")
        // 现在改成传入callback
        webView.addJavascriptInterface(WebAppInterface(requireContext(), this), "Android")
    }
}

内容的提问来源于stack exchange,提问作者Syazlina Aasim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 16:36:02