Странная проблема, переопределяющая один из конструкторов LinearLayout

#java #android

#java #Android

Вопрос:

По какой-то причине Eclipse не нравится вызов super (context, attrs, defStyle), но он доволен другими вызовами super. Ошибка заключается в том, что «Конструктор LinearLayout(Context, AttributeSet, int) не определен».

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

Пожалуйста, помогите 🙂

 public class MyLinearLayout extends LinearLayout {

public MyLinearLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    myInit();
}

public MyLinearLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    myInit();
}

public MyLinearLayout(Context context, int checkableId) {
    super(context);
    myInit();
}
  

Ответ №1:

Согласно этим javadocs, ошибка полностью верна.

LinearLayout у него нет этого конструктора. Это два допустимых конструктора:

 LinearLayout(Context context) 
LinearLayout(Context context, AttributeSet attrs, Map inflateParams) 
  

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

1. Спасибо, это, безусловно, объяснило бы это! Отсюда возникает вопрос — почему ссылка , похоже, противоречит опубликованным вами javadocs?

2. Хороший вопрос, Джодес; Мне самому было интересно это — хотя, вот еще что — сайт разработчиков Android (ваша ссылка), кажется, говорит, что для третьего конструктора требуется уровень API 11. Какая версия SDK у вас установлена / на которую вы ориентируетесь?

3. А, ладно, я нацеливался на уровень 7 🙂

4. Извините — мой google-foo, по-видимому, был слабым. Однако на странице, на которую вы ссылаетесь, в крайнем правом углу списка конструкторов, есть ссылка на рассматриваемый конструктор, начиная с: Уровень API 11 . Щелчок по нему показывает, что этот конструктор есть только в Andriod 3.0. Я собираюсь держать пари, что это не та версия, которую вы используете.

Ответ №2:

http://developer.android.com/reference/android/widget/LinearLayout.html

Согласно сайту разработчика, конструктор LinearLayout (context, attrs, defStyle) доступен только в версии API 11, поэтому он не будет работать в более ранних версиях.