我在科特林遇到一些麻烦

时间:2019-10-09 13:10:34

标签: android object kotlin

我需要创建一个变量vVideo。此变量是SurfaceViewRenderer的类类型。这个班 扩展View并实现另一个获得函数onFrame的类。我需要覆盖此onFrame

这是我尝试过的:

private var vVideo: SurfaceViewRenderer? = null

    fun startConfigurationAudioVideo() {

        vVideo = object : SurfaceViewRenderer(this) {
            override fun onFrame(frame: VideoFrame?) {
                Log.d("vVideo", "onFrame")
                super.onFrame(frame)
            }
        }

        vVideo = findViewById<SurfaceViewRenderer>(R.id.activity_display_videocast)

...

但是, 如果我这样做:

vVideo = object : SurfaceViewRenderer(this) {
            override fun onFrame(frame: VideoFrame?) {
                Log.d("vVideo", "onFrame")
                super.onFrame(frame)
            }
        }

在此之前 vVideo = findViewById<SurfaceViewRenderer>(R.id.activity_display_videocast) 我没有surfaceRender。 而且,如果我做逆运算,我不会得到监听器。

问题是我没有用她的方法onFrame及其表面(它的View)声明vVideo。 问题是我不能同时拥有两个。

感谢帮助!

1 个答案:

答案 0 :(得分:5)

您正在创建并实例化{[key:string]:TopicCategory}的匿名类,然后在接口上获得一个匿名对象。

要使此工作有效,您必须创建一个扩展SurfaceViewRenderer的新类,然后在布局上使用它。

类似这样的东西:

SurfaceViewRenderer

然后在您的布局上使用它:

package your.package.name
class SurfaceViewRendererWithFrameListener:SurfaceViewRenderer
{
    override fun onFrame(frame: VideoFrame?)
    {
        Log.d("vVideo", "onFrame")
        super.onFrame(frame)
    }
}