2017-08-08 205 views
0

禁用廣播我寫了這個代碼啓用和禁用廣播:啓用並在科特林

 val broadcastState = when(state){ 
     true -> {PackageManager.COMPONENT_ENABLED_STATE_ENABLED} 
     false -> {PackageManager.COMPONENT_ENABLED_STATE_DISABLED} 
    } 

    val component:ComponentName=ComponentName(this,DateChangeReceiver::class) 
    packageManager.setComponentEnabledSetting(component, 
      broadcastState,PackageManager.DONT_KILL_APP) 

但是Android工作室給了一些錯誤,直到我改變component這樣:基於

val component:ComponentName=ComponentName(this,DateChangeReceiver::class.java) 

this link它應該用於檢索對象的Java類,但是我所有的類都在kotlin中。所以我想知道如果我做對了。

回答

0

它給你錯誤,因爲ComponentName類需要一個上下文和一個Java類。由於類是寫在科特林,你應該做的,你說獲取類:

DateChangeReceiver::class.java

DateChangeReceiver::javaClass

如果組件名預期科特林類,就沒有問題通過這樣做不使用.java

你會遇到這個使用一些Java庫。

另請參閱this關於Kotlin的反思。如上所述:

請注意,Kotlin類引用與Java類引用不同。要獲取Java類引用,請在KClass實例上使用.java屬性。

+0

當我使用它沒有.java或:: class.java,我得到一個錯誤,說我應該使用'class'或'String!'作爲第二個參數 – payam

+0

是的,因爲它有多個公共構造函數。其中一個將上下文作爲第一個參數,將.class作爲第二個參數,另一個將上下文作爲第一個參數,並將一個字符串表示類名,如第一個鏈接所述 – cristianorbs