Что это значит?
Когда класс расширяет другой, скажем, у вас есть 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
помечен как таковой, и поэтому вы должны позвонить супер.