Когда вы вызываете setContentView()
во второй раз, вы заменяете то, что было установлено в первый раз, оставляя вам только фон.Сбой наиболее вероятен, потому что вы зависите от элементов в основном макете, который удаляется.
Вместо того, чтобы дважды вызывать setContentView()
, вы должны включить GLSurfaceView
в основной макет.Ниже приведен пример того, как это можно сделать:
<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent>
<your.application.package.ClearGLSurfaceView
android:layout_width="match_parent"
android:layout_width="match_parent"/>
<!--put the rest of your layout here, i.e the contents of the original R.layout.main_pixie-->
</FrameLayout>
Затем вы можете загрузить этот макет в свой onCreate()
как обычно (main_pixie_new относится к приведенному выше XML, я просто дал ему это имя, чтобы сохранитькак можно более ясно):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_pixie_new);
}