Как да поддържам показването на диалогов прозорец при промяна на ориентацията?

Имам дейност, която надува списъчен изглед. При щракване върху елемент от списък се отваря диалогов прозорец (обработва се в съответния адаптер за списък.) При промяна на ориентацията диалоговият прозорец за показване (ако има такъв) изчезва (както се очаква.) Това, което искам е диалоговият прозорец за показване да не се отхвърля при промяна на ориентацията и Нямам идея как да се справя чисто.


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