Ich versuche, ein benutzerdefiniertes LinearLayout (auf Android) zu erstellen, aber ich erhalte immer Compilerfehler, wenn ich versuche, es in meiner Hauptaktivitätsklasse zu verwenden. Das erweiterte LinearLayout benötigt einen Context, der vom Konstruktor übergeben wird, aber ich weiß nicht, wo ich diesen Context erhalten soll. Alle Beispiele, die ich sehe, zeigen die Weitergabe des this-Zeigers aus der Aktivität. Was mache ich falsch?Android: Kann Konstruktor für benutzerdefinierte LinearLayout nicht finden
Compilerfehler
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);
}
}
Lösung:
Sieht aus wie das Problem zwei Probleme waren.
- Konstruktoren haben keinen Typ void (unvorsichtiger Fehler meinerseits).
- Hatte "Super (Kontext)" als die erste Anweisung im Konstruktor aufrufen.
importieren Sie Ihre BoardLayout-Klasse? – RoflcoptrException