获取错误:覆盖方法应调用super.onActivityResult



我正在尝试从相机捕获图像并将其显示在imageView上。我试过了,但收到错误"覆盖方法应该调用super.onActivityResult",你可以在下面看到我的代码。请让我知道我做得对。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == TAKE_PICTURE && resultCode == Activity.RESULT_OK) {
try{
val file= File(currentPath)
val uri = Uri.fromFile(file)
val imageView = findViewById<ImageView>(R.id.imageView)
imageView.setImageURI(uri)
}catch(e:IOException){
e.printStackTrace()
}
}
if (requestCode == PICK_PICTURE && resultCode == Activity.RESULT_OK) {
try{
val uri = data!!.data
val imageView = findViewById<ImageView>(R.id.imageView)
imageView.setImageURI(uri)
}catch(e:IOException){
e.printStackTrace()
}
}
}

这是什么意思?

当一个类扩展另一个类时,假设你有class Aclass B : A

在这种情况下,类 A 是 B 的super类。

因此,如果类A有一个名为的方法:

fun someMethod()

你可以做:

var myB = B()
myB.someMethod()

这有效地调用了 A 中的代码,因为 B 扩展了 A,并且someMethod不是私有的。

现在,如果你想修改someMethod在 B 中的行为,你override它...

override fun someMethod() {
// b does something different here
}

现在,您可以将 A 的someMethod标记为@CallSuper(来自此处的注释。

在这种情况下,您会收到警告/错误,B也必须调用其超级(也称为父级(类...

所以 B 现在必须做:

override fun someMethod() {
super.someMethod()
// your B code too..
}

没有规则可以在开始时调用它,您可以随时调用它,只要在函数结束之前调用它即可。在某些情况下,希望将其作为第一件事(例如,如果 A 在 B 中也执行了您需要的操作(,而在其他一些情况下,您希望等待 B 执行某些操作,然后再调用super...。只要你这样做。

onActivityResult被标记为这样,因此您必须调用 super。

super.onActivityResult(requestCode, resultCode, data);添加为onActivityResult方法的第一行。

最新更新