我正在尝试从相机捕获图像并将其显示在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 A
和class 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
方法的第一行。