По какой-то причине, которую я не понимаю, когда я создаю свой SurfaceView из макета XML, поверхность очищается при каждом обновлении. Но если я просто инициализирую его в коде без XML, нарисованная поверхность сохраняется.
Если я инициализирую SurfaceView следующим образом, при каждом обновлении оно отображается пустым:
app = (App) findViewById(R.id.app);
app.setActivity(this);
Если я инициализирую SurfaceView следующим образом, рисунок поверхности сохраняется при каждом обновлении:
app = new App(this);
setContentView(app);
app.setActivity(this);
Вот макет XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black"
android:clickable="true">
<com.threedtopo.someapp.android.app
android:id="@+id/app"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black"
android:clickable="true" />
</LinearLayout>
Любое понимание будет оценено, спасибо!
Редактировать: это способ инициализации корневого представления в первом примере:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout
android:layout_alignParentTop="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<!-- <TextView -->
<EditText
android:id="@+id/hidden_text"
android:inputType="textLongMessage"
android:autoText="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="true"
android:visibility="gone"
android:focusable="true"
android:focusableInTouchMode="true"
/>
</LinearLayout>
<ViewSwitcher
android:id="@+id/switcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/splash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/splashscreen" />
<com.threedtopo.someapp.android.app android:id="@+id/app"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:clickable="true" />
</ViewSwitcher>
<LinearLayout
android:id="@+id/keyboard_layout"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<android.inputmethodservice.KeyboardView
android:id="@+id/keyboard"
android:visibility="gone"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0" />
</LinearLayout>
</RelativeLayout>