Wie kann ich verhindern, dass Android Activity kurz in den Hochformatmodus wechselt, wenn ich Querformat angegeben habe?

Ich habe angegeben, dass meine Aktivität auf Landschaft festgelegt werden soll, was die meiste Zeit funktioniert.Insbesondere, wenn die Aktivität bereits ausgeführt wird und ich eine neue Instanz von Eclipse startebeginnt die Aktivität im Hochformat und ändert sich sofort in Querformat - jedoch nicht, bevor der Ansicht bereits mitgeteilt wurde, dass es sich um das Hochformat handelt.Meine Ansicht wird also als Hochformat initialisiert, erhält jedoch sofort einen surfaceChanged.

In meinem Manifest ist Folgendes angegeben:

    <activity android:screenOrientation="landscape"
        android:configChanges="orientation|keyboardHidden"

Ich habe auch versucht:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Als ich auf API-Level 7 abzielte, habe ich geglaubt, dass dies gut funktioniert hat. Jetzt ziele ich auf API Level8 und es ist eine merkwürdige Eigenart aufgetaucht.

In der oncreate-Methode ist der Wert von:

getResources().getConfiguration().orientation

ist:

Configuration.ORIENTATION_PORTRAIT

Unmittelbar nach dem Erstellen der Aktivität wird die Ausrichtung in Querformat geändert. Ich erhalte einesurfacechangedund ich kann alles "reparieren". Aber warum ist es überhaupt ein Porträt?

Ich vermute, es hat damit zu tun, dass die Anwendung beim Start über einen Hochformatbildschirm automatisch gedreht wird. Es scheint bizarr, dass die Anwendung, die angewiesen wurde, NIEMALS im Porträt zu sein, auf diese Weise gestartet und dann schnell geändert wird.

Aber gibt es eine Möglichkeit, nicht zuzulassen, dass es jemals ein Porträt zeigt?

Ich habe dies in meine Aktivitäten aufgenommenonCreate:

while (getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) 
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

Dies führte dazu, dass es für immer dort stecken blieb :)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage