Wpis z mikrobloga

Wykorzystuję w aplikacji "dialog" do pokazywania okna wyboru. Wszystko działa, ale gdy mam wyświetlony dialog i wgram nową wersję aplikacji bez całego kompilowania (tylko wygląd - "ficzer" android studio) to okno zostaje na tym dialogu i nie da się nic zrobić. Testowałem w starszym Androidzie 4.4 i dało się wyłączyć ten dialog a tutaj pomaga jedynie restart apki w telefonie. Ktoś wie dlaczego? W AndroidManifest mam:

android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"

Oczywiście na potrzeby testowania mi to nie jest potrzebne, ale wiem, że u klienta wystąpiła raz taka sytuacja i chcę się przed tym zabezpieczyć. Kod włączenia dialogu:

dialog = new Dialog(activity);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog);
//tutaj obsluga przyciskow
dialog.show();

#androiddev
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@loginek0: nie rozumiem jaki jest stan faktyczny i co chcesz osiągnąć. Musisz lepiej wytłumaczyć.

a propos tej linii:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
To jest hack i oficjalna dokumentacja mocno to temperuje. W Twoim przypadku jedynym koszernym rozwiązaniem jest stworzenie AlertDIalog poprzez Builder.
  • Odpowiedz
@Mithrindil: Ok, od początku :D Mam zwykły przycisk, który po naciśnięciu wyświetla owy wspomniany dialog. Dialog wykorzystuję zamiast AlertDialog z racji iż potrzebuję wykorzystać w nim inny layout (różne przyciski, inne tło - czego w AlertDialog bym nie osiągnął).
Jeśli chodzi o linijkę:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
to użyłem ją tylko po to, aby usunąć tytuł
  • Odpowiedz
@loginek0: Tak, teraz rozumiem.

Primo - AlertDialog.Builder posiada metodę setView gdzie możesz podać dowolny layout. Dodatkowo konstruktor przyjmuje ThemeId więc możesz sobie dowolnie wystylować całe okienko.

Co do Twojego problemu - nie wiem co Ci mogę poradzić, prawdopodobnie obiekty listenera giną w trakcie zmiany stanu aplikacji a widoki zostają. Nie wiem dokładnie jak to jest zorganizowane wewnętrznie, może są jakieś WeakReferences używane. Jedyne co mi przychodzi do głowy to zmienić
  • Odpowiedz