Нужно ли использовать super.onActivityResult() в onActivityResult()?
Какой из них лучше и почему?
Этот:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
...
}
или это:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
// do not call super.onActivityResult()
...
}
Ответы
Ответ 1
Первый лучше.
Это больше согласуется с другими функциями событий в API Activity
, это ничего не стоит (код, который вы вызываете, ничего не делает в данный момент), и это означает, что вам не нужно запоминать, чтобы добавить вызов в будущее, когда изменяется поведение базового класса.
Edit
Как отметил Су-Ань Хван, мой прогноз о поведении изменения базового класса в будущем сбылся! FragmentActivity
требуется для вызова метода на super
.
Ответ 2
Вы должны вызвать super.onActivityResult, если вы используете FragmentActivity из пакета поддержки (также SherlockFragmentActivity). В противном случае это не обязательно, однако я бы просто подключил его туда ради этого. Проверьте источник FragmentActivity (no onActivityResult не пуст).
Источник FragmentActivity
Ответ 3
Если у вас нет нескольких подклассов Activity
, которые зависят от него в вашем приложении, это не похоже на вызов super.onActivityResult()
, поскольку реализация onActivityResult()
пуста (я проверил уровень API 15).
Ответ 4
Вы можете сами ответить на этот вопрос, посмотрев исходный код Activity.
В основном это реализация onActivityResult(...)
выглядит так:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
... так ничего не делает.
Ответ 5
Хотя кажется, что реализация по умолчанию пуста, возможно, что в будущих обновлениях это может быть не всегда так. Я бы рекомендовал использовать его