setRequestedOrientation vor dem Anzeigen von ProgressDialog führt zum Absturz

8

Ich entwickle eine Android-App, die nur im Hochformat ausgeführt werden sollte, da das Layout nicht auf dem Landscape-Bildschirm eines Telefons angezeigt wird. Auf Tablets und Netbooks möchte ich jedoch, dass die App nur im Querformat ausgeführt wird.

Ich habe jetzt versucht zu überprüfen, ob die App auf einem Tablet-Gerät läuft und die entsprechende angeforderte Ausrichtung über setRequestedOrientation einzustellen.

Das Problem ist, dass die App jetzt abstürzt, wenn das Gerät nicht in der von mir angeforderten Ausrichtung gehalten wird, weil ich kurz nach dem Aufruf von setRequestedOrientation einen progressDialog zeige, der dann ein Fenster zu verlieren scheint.

Logcat sagt:

%Vor%

Was kann ich tun, um diesen Absturz zu verhindern? Jede Hilfe würde sehr geschätzt werden.

BEARBEITEN: Da ich das nicht lösen konnte, habe ich es endlich geschafft, mein Layout so zu bearbeiten, dass es jetzt im Hoch- und Querformat verwendet werden kann.

    
FD_ 18.10.2012, 19:23
quelle

2 Antworten

11

Haben Sie Quellcode, den Sie anzeigen könnten? Das könnte helfen, das Problem zu identifizieren.

Ich hatte eigentlich genau das gleiche Problem. Aber es geschah nur für einige meiner Aktivitäten.

Wenn sich die Bildschirmausrichtung ändert, zerstört Android die Aktivität und erstellt sie neu.

Also hatte ich Code, der so aussah.

%Vor%

Sehen Sie, dass die Ansicht nicht korrekt an den Fenstermanager angefügt wurde. Also entschied ich, dass das Oncreate vielleicht nicht der beste Ort dafür war.

Stattdessen habe ich es meinem Lebenslauf hinzugefügt und es funktioniert. Wie so:

%Vor%

Leider führt dies auch dazu, dass die Aktivität immer noch zerstört und neu erstellt wird. OnCreate und onResume zweimal aufrufen ... Nicht gut, oder?

Also, um dieses Problem zu beheben. Sie müssen dies in Ihr Android-Manifest für Ihre Aktivität hinzufügen.

%Vor%

Ein Beispiel:

%Vor%

Dieser Code verhindert den Zyklus zum Zerstören / Wiederherstellen.

Hoffentlich hilft das!

Prost

    
Dave 18.10.2012, 20:33
quelle
9

Wenn Sie

verwenden %Vor%

vorübergehend sperren und

%Vor%

um die Bildschirmdrehung zu entsperren, haben Sie vielleicht folgendes Problem .

Wenn Sie diese Methode verwenden, um die Bildschirmausrichtung zu sperren, und das Gerät nicht in seiner Standardausrichtung ist, wird es in die Standardausrichtung wechseln und Ihre Aktivität zerstören und erstellen. Ihre App wird abstürzen, da Sie versuchen, einige der veralteten progressDialogs zu aktualisieren.

    
darksaga 18.10.2012 20:48
quelle

Tags und Links