Как сохранить диалоговое окно при изменении ориентации?

У меня есть активность, которая раздувает список. При щелчке элемента списка открывается диалоговое окно (оно обрабатывается в соответствующем адаптере списка). При изменении ориентации диалоговое окно отображения (если оно есть) исчезает (как и ожидалось). Я хочу, чтобы диалоговое окно отображения не закрывалось при изменении ориентации и Я понятия не имею, как с этим аккуратно обращаться.


person elfar    schedule 18.08.2014    source источник
comment
вы не можете справиться, если только вы не хотите отказаться от поддержки изменения ориентации вашего приложения.   -  person Techfist    schedule 18.08.2014


Ответы (2)


Когда вы поворачиваете телефон, ваша активность фактически уничтожается и создается заново. Это включает в себя ваш диалог. Да, возможно, это самое глупое дизайнерское решение в истории, но мы с ним застряли. Есть два способа исправить это:

1) Отключить этот "полезный" функционал. Если у вас нет разных макетов для альбомной и портретной ориентации, я бы посоветовал. Добавьте android:configChange="orientation|resize" в свою активность в манифесте.

2) Реализовать onSaveInstanceState/onRestoreInstanceState и иметь переменную, которая указывает, нужно ли вам воссоздавать и перезапускать диалоговое окно.

person Gabe Sechan    schedule 18.08.2014

Вы можете отключить изменение ориентации в файле 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);
person fatih inan    schedule 18.08.2014