Просто пытаюсь расширить View и выполнить некоторую пользовательскую работу, но Eclipse будет жаловаться, когда я попытаюсь переопределить метод setFrame. Утверждение, что в родительском классе нет метода для переопределения:
Метод setFrame (int, int, int, int) типа Test должен переопределить или реализовать метод супертипа
Вот подпись метода из источника Android SDK.
protected boolean setFrame(int left, int top, int right, int bottom)
Как вы можете видеть, это не частный или пакетный уровень, или даже не задан как окончательный ... просто защищенный. Что должно означать, что я полностью могу переопределить это в подклассе. Правильно? Ниже приведен минимум того, что я пытаюсь сделать в Eclipse. Возможно, это просто ошибка Eclipse, но я не слишком знаком с использованием Ant для проверки.
Редактировать: Тем, кто отвечает, что setFrame не определен в классе View, могу вас заверить. Как еще вы думаете, я получил подпись метода? Он даже вызывается во время компоновки (). Или я серьезно просто сумасшедший?
git HEAD: View.java
Кекс (1.5r4): View.java
Вы даже можете увидеть, как метод переопределяется в классах ImageView и TextView ... вот почему я серьезно озадачен тем, почему я не могу переопределить его непосредственно из View напрямую ...
public class Test extends View {
public Test(Context context) {
super(context);
}
public Test(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Test(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected boolean setFrame(int left, int top, int right, int bottom) {
return super.setFrame(left, top, right, bottom);
}
}