Возврат не вызывается из super в родительской активности

#java #android #superclass #super

#java #Android #суперкласс #супер

Вопрос:

У меня есть AdapterView.OnItemClickListener реализованный в родительском Activity элементе, который возвращает, если позиция <= равна нулю. Когда я создаю подкласс this Activity и переопределяю OnItemClickListener вызов super , затем извлекаю элемент из моего Adapter , ArrayIndexOutOfBoundsException брошенного. Но это происходит потому return , что isn’t called before Adapter.getItem вызывается из моего подкласса. Другими словами:

Это работает

 @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    if (position <= 0) {
        return;
    }
    final Foo foo = mAdapter.getItem(position);
}
  

Это не работает


В моем родительском Activity

 @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    if (position <= 0) {
        return;
    }
}
  

В моем подклассе

 @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    super.onItemClick(parent, view, position, id);
    final Foo foo = mAdapter.getItem(position);
}
  

Но если я войду OnItemClickListener.onItemClick в свой родительский Activity класс и просто оставлю Adapter.getItem его в своем подклассе, Exception он не будет выброшен, а журнал будет напечатан.

Итак, я полагаю, я просто не понимаю, почему super и return не вызывается заранее, хотя, похоже, так и должно быть. super Просто так не работает? Я просто полностью что-то упускаю из виду здесь? Просто чтобы было ясно, ArrayIndexOutOfBoundsException в этом случае это ничего не значит. Это происходит потому, что я использую очень настраиваемый Adapter .

Комментарии:

1. super.onItemClick — это просто любой другой вызов метода. когда он возвращается, он не оказывает никакого влияния на вызывающий метод.

2. О, я думаю, я понял, что это перенесено.