我有一个扩展AppCompatActivity的试用活动类Main Activity。在文档中,当我尝试覆盖onRequestPermissionsResult上的方法时,AppCompatActivity继承了onRequestPermissionsResult方法, 此错误显示
"错误:(95,5)' onRequestPermissionsResult'没有任何内容"
class MainActivity : AppCompatActivity(), ConnectionCallbacks, OnConnectionFailedListener{
//I didnt include the other functions in the interfaces, suffice to say i have already added them in the original
override fun onRequestPermissionsResult(requestCode : Int , permissions: Array<String>, grantResults: Array<Int>){
println("SHOULD HAVE THIS FUNCTION")
}
}
答案 0 :(得分:0)
Kotlin Array<Int>
映射到Java Integer[]
,IntArray
映射到Java int[]
,它们是Java中不同的数组类型。你可以在Kotlin看到mapped types更进一步。
AppCompatActivity#onRequestPermissionsResult方法签名是:
override fun onRequestPermissionsResult(requestCode : Int ,
permissions: Array<String>,
grantResults: IntArray){
// it is IntArray rather than Array<Int> ---^
TODO()
}
而不是:
override fun onRequestPermissionsResult(requestCode : Int ,
permissions: Array<String>,
grantResults: Array<Int>){
TODO()
}
注意:如果api承诺其参数永远不会是null
,例如onRequestPermissionsResult,那么您可以使用IntArray
来简化参数使用。否则,您应该使用IntArray?
代替。
IF 你不想知道Kotlin中的所有mapped types,还有另一种方法可以让你快速覆盖超类方法。首先,将光标放在类中,然后按CTRL+O
选择要覆盖的方法。例如:
class MainActivity : AppCompatActivity(),
ConnectionCallbacks,
OnConnectionFailedListener{
// put the cursor here, press `CTRL+O` to select which method you want to override
}