Подтвердить что ты не робот

Нужно ли использовать 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()
    ...
}
4b9b3361

Ответ 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

Хотя кажется, что реализация по умолчанию пуста, возможно, что в будущих обновлениях это может быть не всегда так. Я бы рекомендовал использовать его