Получение ошибки: метод переопределения должен вызвать super.onActivityResult - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь захватить изображение с камеры и отобразить его на изображении. Я пытался, но получая ошибку «метод переопределения должен вызывать 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()
        }
    }
}

Ответы [ 2 ]

1 голос
/ 06 октября 2019

Что это значит?

Когда класс расширяет другой, скажем, у вас есть class A и class B : A

В этом контексте класс A является super классом B.

Таким образом, если у класса A есть метод с именем:

fun someMethod()

, вы можете сделать:

var myB = B()
myB.someMethod()

, это эффективно вызываеткод в A, потому что B расширяет A, а someMethod не является частным.

Теперь, если вы хотите изменить поведение someMethod в B, вы override it ...

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

теперь вы можете пометить someMethod A как @CallSuper (аннотация от здесь .

В этом случае вы получаете предупреждение / ошибку, что B должен также вызвать свой супер (тоже как родительский) класс ...

так что B теперь должен делать:

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

Нет правила называть его в начале Вы можете вызвать его в любое время, если вы делаете это до концаВ некоторых случаях желательно вызывать его как первое (если, например, A делает то, что вам нужно и в B), а в некоторых других случаях вы хотите подождать, пока B что-то сделает, прежде чем вызывать super.... Пока вы это делаете.

onActivityResult помечен как таковой, и поэтому вы должны позвонить супер.

1 голос
/ 06 октября 2019

добавить super.onActivityResult(requestCode, resultCode, data); в качестве первой строки метода onActivityResult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...