[英]How to call extension object inside companion from another class using kotlin?
I want to make playvideo using Exoplayer, but I have a little bit problem with how to access my extension function.我想使用 Exoplayer 制作播放视频,但我对如何访问我的扩展功能有一点问题。
import com.google.android.exoplayer2.ui.PlayerView
class playerViewadapter {
companion object{
fun PlayerView.loadView(){
}
}
}
but loadView
extension from my AppCompatActivity
not show但是我的
AppCompatActivity
loadView
扩展没有显示
class Test:AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test)
playerViewadapter.loadView()
}
}
How to call loadView
from my AppCompatActivity如何从我的 AppCompatActivity 调用
loadView
You have to be in context of the object in order to invoke something of it.您必须在对象的上下文中才能调用它的某些内容。
with(playerViewadapter) { }
or playerViewadapter.apply { }
should do it: with(playerViewadapter) { }
或playerViewadapter.apply { }
应该这样做:
Example:例子:
with(playerViewadapter) {
playerView.loadView()
}
Why You define extension function in a companion object of another class?为什么要在另一个类的伴生对象中定义扩展函数? Isn't it better to define it in the file Where You have
PlayerView
or if it is not Your class, create a new file for utils functions?在您拥有
PlayerView
的文件中定义它,或者如果它不是您的类,为 utils 函数创建一个新文件不是更好吗?
class PlayerView
{
}
fun PlayerView.loadView()
{
}
And then You can call this function:然后你可以调用这个函数:
val playerView = PlayerView()
playerView.loadView()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.