在父Activity中没有从super调用返回

时间:2014-06-19 19:59:37

标签: java android superclass super

我在父AdapterView.OnItemClickListener中实施了Activity,如果<=的位置为零,则会返回。当我将此Activity子类化并覆盖OnItemClickListener时,请调用super,然后从我的Adapter中检索该项,并抛出ArrayIndexOutOfBoundsException。但这是因为在从我的子类调用return之前未调用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并打印日志。

所以,我想我只是不明白为什么事先没有调用superreturn,即使看起来应该如此。 super只是不这样运作吗?我只是完全忽略了一些东西吗?需要明确的是,ArrayIndexOutOfBoundsException在这种情况下没有任何意义。这是因为我使用的是非常自定义的Adapter

0 个答案:

没有答案