Вам нужно указать место для вашего класса-наследника SurfaceView
(GameSurface) на общей XML-разметке активити (gameactivity.xml
), а не подключать его отдельно.
Этот класс обязательно должен содержать конструктор с аттрибутами, а на разметке указывается полный путь до вашего класса (включающий имя пакета)
package myapp.views; // имя пакета класса-наследника SurfaceView
public MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
//конструктор без атрибутов
public MySurfaceView(Context context) {
super(context);
...
}
//обязателен конструктор с атрибутами
public MySurfaceView (Context context, AttributeSet attributeSet) {
super(context, attributeSet);
getHolder().addCallback(this);
...
}
...
}
В вашей разметке (gameactivity.xml
) определяете местоположение своего SurfaceView
с указанием полного пути до класса:
<myapp.views.MySurfaceView
android:id = "@+id/mySurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
Получить доступ к SurfaceView
из активити можно методом findViewById()
:
SurfaceView mySurface = (SurfaceView) findViewById(R.id.mySurfaceView);
пример
PS: ваш surf
не метод, а экземпляр класса