Я недавно обновил свой телефон до пряников, и, к моему ужасу, перестало работать одно из моих приложений!
Приложение состоит из SurfaceView и макета (вида), который отображается в виде наложения поверх этого SurfaceView.
XML выглядит так:
<?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"
>
<com.mycompany.MySurfaceView
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<include layout="@layout/settings"
android:layout_alignTop="@id/myview"
android:visibility="invisible"
android:id="@+id/settings"
/>
</RelativeLayout>
Когда пользователь нажимает кнопку меню, я использую этот код для отображения вида:
View settings = (View)findViewById(R.id.settings);
settings.setVisibility(View.VISIBLE);
Это работало безупречно на версиях ранее 2.3, но теперь поведение очень случайное.
Наблюдения
Очень редко все работает.
Иногда вид отображается после его скрытия / скрытия.
Иногда вы можете нажимать кнопки в представлении (даже если оно невидимо), что делает представление отображаемым до конца срока службы приложения.
Метод getVisibility всегда сообщает правильное значение.
Что я пробовал
Восстановление кеша рисования
Использование метода BringToFront
Сообщение недействительным
Установка начального значения представления в «видимое», это заставляет все работать, но я действительно хочу, чтобы оно было изначально невидимым!
Если кто-то захочет проверить проблему, вы можете попробовать ее самостоятельно в моем приложении (оно доступно на рынке, ищите "chainparticles").
Спасибо!