Kotlin – MainActivity扩展AppCompatActivity,onRequestPermissionsResult函数未找到,不能被覆盖
我有一个扩展AppCompatActivity的试用活动类主活动。 在文档中,AppCompatActivity继承了onRequestPermissionsResult方法,当我尝试重写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") } }
Kotlin Array<Int>
映射到Java Integer[]
, IntArray
映射到Java int[]
,它们是Java中不同的数组类型。 您可以进一步在Kotlin中查看映射类型 。
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?
代替。
如果你不想知道Kotlin中的所有映射类型 ,还有另外一种方法可以让你快速重写超类方法。 首先,将光标放在类中,然后按CTRL+O
选择要覆盖的方法。 例如:
class MainActivity : AppCompatActivity(), ConnectionCallbacks, OnConnectionFailedListener{ // put the cursor here, press `CTRL+O` to select which method you want to override }