Я пытаюсь создать собственный LinearLayout (на Android), но продолжаю получать ошибки компилятора, когда пытаюсь использовать его в своем основном классе Activity. Расширенному LinearLayout нужен контекст, переданный ему конструктором, но я не знаю, где взять этот контекст. Все примеры, которые я вижу, показывают передачу указателя this из Activity. Что я делаю не так?
Ошибка компилятора
MyApp.java:15: cannot find symbol
symbol: constructor BoardLayout(com.test.program.MyApp)
location: class com.test.program.BoardLayout
BoardLayout board = new BoardLayout(this);
BoardLayout.java
public class BoardLayout extends LinearLayout {
public void BoardLayout(Context context) {
// initialisation code
}
public BoardLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
MyApp.java
public class MyApp extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BoardLayout board = new BoardLayout(this); // Doesn't work!
setContentView(board);
}
}
Решение:
Похоже, проблема была в двух проблемах.
- У конструкторов нет типа void (неосторожная ошибка с моей стороны).
- Пришлось вызывать "super (context)" как первую инструкцию в конструкторе.