Android surfaceview не может работать
Это простой вопрос, но я не могу понять его:
Это мой xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GG.My_pic.testA
android:id = "@+id/myview"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
/>
</FrameLayout>
В лунном спускаемом аппарате основной поток использует
// tell system to use the layout defined in our XML file
setContentView(R.layout.lunar_layout);
Но я не могу использовать мой
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Если я изменю свой R. макет.главное чтобы - > новый тэста(эту) , она работает
(testA-это класс, который расширяет SurfaceView реализует SurfaceHolder.Обратный вызов)
Почему??
1 ответ:
Я выяснил почему, но не знаю почему.
Будучи настоящим новичком как в java, так и в android, я потратил очень много времени, чтобы выяснить это.Ключ к этой проблеме -
Класс gameView расширяет SurfaceView реализует SurfaceHolder.Обратный звонок {
public gameView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub }
}
Вы можете видеть, что это основа surfaceview, в каждом учебнике
Такие как
Http://android-er.blogspot.com/2010/05/android-surfaceview.html
Http://www.droidnova.com/playing-with-graphics-in-android-part-ii,160.html
В surfaceview есть 3 вида конструкторов:
SurfaceView(Context context) SurfaceView(Context context, AttributeSet attrs) SurfaceView(Context context, AttributeSet attrs, int defStyle)
Я провел день, используя первый:
И дело всегда доходит до"силового закрытия". Но когда я обратился ко второму конструктору:SurfaceView(Context context)
SurfaceView(Context context, AttributeSet attrs)
Это вдруг срабатывает!
Это и есть решение.
Может ли кто-нибудь сказать мне, почему??