繁体   English   中英

如何使用kotlin从另一个类调用同伴内部的扩展对象?

[英]How to call extension object inside companion from another class using kotlin?

我想使用 Exoplayer 制作播放视频,但我对如何访问我的扩展功能有一点问题。

import com.google.android.exoplayer2.ui.PlayerView

class playerViewadapter {
    companion object{
      fun PlayerView.loadView(){
      }
   }
}

但是我的AppCompatActivity loadView扩展没有显示

class Test:AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.test)
        playerViewadapter.loadView()
    }
}

如何从我的 AppCompatActivity 调用loadView

您必须在对象的上下文中才能调用它的某些内容。

with(playerViewadapter) { }playerViewadapter.apply { }应该这样做:

例子:

with(playerViewadapter) {
    playerView.loadView()
}

自己试试

为什么要在另一个类的伴生对象中定义扩展函数? 在您拥有PlayerView的文件中定义它,或者如果它不是您的类,为 utils 函数创建一个新文件不是更好吗?

class PlayerView
{
}

fun PlayerView.loadView()
{
}

然后你可以调用这个函数:

val playerView = PlayerView()
playerView.loadView()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM