У меня есть активность, которая раздувает список. При щелчке элемента списка открывается диалоговое окно (оно обрабатывается в соответствующем адаптере списка). При изменении ориентации диалоговое окно отображения (если оно есть) исчезает (как и ожидалось). Я хочу, чтобы диалоговое окно отображения не закрывалось при изменении ориентации и Я понятия не имею, как с этим аккуратно обращаться.
Как сохранить диалоговое окно при изменении ориентации?
Ответы (2)
Когда вы поворачиваете телефон, ваша активность фактически уничтожается и создается заново. Это включает в себя ваш диалог. Да, возможно, это самое глупое дизайнерское решение в истории, но мы с ним застряли. Есть два способа исправить это:
1) Отключить этот "полезный" функционал. Если у вас нет разных макетов для альбомной и портретной ориентации, я бы посоветовал. Добавьте android:configChange="orientation|resize" в свою активность в манифесте.
2) Реализовать onSaveInstanceState/onRestoreInstanceState и иметь переменную, которая указывает, нужно ли вам воссоздавать и перезапускать диалоговое окно.
Вы можете отключить изменение ориентации в файле androidManifest.xml.
<activity
android:name="com.example.deneme"
android:label="@string/app_name"
android:launchMode="singleTop"
*************android:screenOrientation="landscape" >*******************
</activity>
OR
вы можете сделать это до того, как появится диалоговое окно
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
после показа диалога
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);