Pracuję nad aplikacją dla systemu Android, która powinna działać tylko w trybie portretu ze względu na układ, który nie pasuje do ekranu poziomego telefonu. Jednak na tabletach i netbookach chcę, aby aplikacja działała tylko w trybie poziomym.setRequestedOrientation przed wyświetleniem ProgressDialog prowadzi do awarii
Próbowałem teraz sprawdzić, czy aplikacja działa na tablecie i ustawia odpowiednią orientację za pomocą metody setRequestedOrientation.
Problem polega na tym, że aplikacja zawiesza się teraz, gdy urządzenie nie jest jeszcze trzymane w wybranej przeze mnie orientacji, ponieważ wyświetlam komunikat progressDialog krótko po wywołaniu funkcji setRequestedOrientation, która wydaje się wówczas przeciekać przez okno.
Logcat mówi:
10-18 21:15:30.698: E/WindowManager(653): Activity has leaked window [email protected] that was originally added here
10-18 21:15:30.698: E/WindowManager(653): android.view.WindowLeaked: Activity has leaked window [email protected] that was originally added here
10-18 21:15:30.698: E/WindowManager(653): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:279)
10-18 21:15:30.698: E/WindowManager(653): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
10-18 21:15:30.698: E/WindowManager(653): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
10-18 21:15:30.698: E/WindowManager(653): at android.view.Window$LocalWindowManager.addView(Window.java:537)
10-18 21:15:31.888: E/WindowManager(653): Activity has leaked window [email protected] that was originally added here
10-18 21:15:31.888: E/WindowManager(653): android.view.WindowLeaked: Activity has leaked window com.android.internal.policy.impl.Ph[email protected] that was originally added here
10-18 21:15:31.888: E/WindowManager(653): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:279)
10-18 21:15:31.888: E/WindowManager(653): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
10-18 21:15:31.888: E/WindowManager(653): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
10-18 21:15:31.888: E/WindowManager(653): at android.view.Window$LocalWindowManager.addView(Window.java:537)
10-18 21:15:34.168: E/AndroidRuntime(653): at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:599)
10-18 21:15:34.168: E/AndroidRuntime(653): at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:336)
10-18 21:15:34.168: E/AndroidRuntime(653): at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:151)
Co mogę zrobić, aby zapobiec tej katastrofie? Każda pomoc będzie bardzo ceniona.
EDYTOWANIE: Ponieważ nie byłem w stanie rozwiązać tego problemu, w końcu udało mi się edytować mój układ, aby teraz można było go używać w trybie pionowym i poziomym.
Dzięki za napisanie tak długiej odpowiedzi, ale niestety to nie rozwiązało mojego problemu. –
Bez problemu. Przepraszam, że ci nie pomogło. Następnym razem, jeśli dodasz kod źródłowy, pomoże ci to w śledzeniu konkretnego problemu. Miałem podobny problem i działało to dla mojego konkretnego problemu. Cieszę się, że to działa. – Dave
Dzięki, twoja odpowiedź uratowała mnie Dave! Właściwie musisz ustawić "android: configChanges =" orientacja "' w manifeście i wywołać 'setRequestedOrientation()' na początku 'onCreate()';) –