簡體   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