17

Mam aktywność, której nie można odtworzyć po zmianie orientacji. I dodaje następujące do zgłoszenia działalności w manifeście:Zmiana orientacji w plasterku plastra miodu

android:configChanges="orientation" 

W Androidzie 2.3 działa to doskonale. Na HONEYCOMB_MR2onCreate jest wywoływana tak czy inaczej po zmianie orientacji.

Czy jest coś jeszcze, co należy zrobić w HONEYCOMB_MR2, aby uniemożliwić odtworzenie działania po zmianie orientacji?

+0

Czy próbowałeś 'android: configChanges =" keyboardHidden | orientation "'? Nie spodziewałbym się, że to coś zmieni, ale warto spróbować. – CommonsWare

+0

@CommonsWare Nie, ale próbując wszystkich możliwych wartości znalazłem taki, który działa. Zobacz moją odpowiedź. – hpique

Odpowiedz

37

Najwyraźniej użycie orientation|screenSize (?) Zapobiega onCreate na strukturze plastra miodu i (jak dotąd) nie wydaje się naruszać niczego w poprzednich wersjach systemu Android.

android:configChanges="orientation|screenSize" 

Nie mam pojęcia, dlaczego jest to konieczne, a ja naprawdę nie rozumiem documentation o tej nowej wartości.

Podejrzewam, że w HONEYCOMB_MR2 po zmianie orientacji aktywność traktuje to jako dwie zmiany konfiguracji: orientację i rozmiar ekranu. I obie próbują domyślnie odtworzyć działanie.

+0

Tak, to są nowe. Jaka jest twoja wartość 'android: targetSdkVersion'? – CommonsWare

+0

android: targetSdkVersion = "13" – hpique

+2

OK, cóż, to spowodowałoby to, co mówią doktorzy. Ma to związek z tymi kwalifikatorami zestawu zasobów: http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html Zasadniczo, ponieważ rozszerzyły one poprzedni mały/normalny/large/xlarge i port/land, aby uwzględnić zbiory zasobów na podstawie wymiarów, będą uwzględniać zmiany w tych wymiarach jako zmiany konfiguracji. Niewykluczone, że mogą istnieć urządzenia, w których wymiary te nie zmieniają się w wyniku orientacji (np. Urządzenia z dwoma ekranami z włączaniem/wyłączaniem drugiego ekranu). – CommonsWare