android - unerwartete kurze Orientierungsänderung bei Aktivitätswechsel

Ich möchte die Ausrichtung des Bildschirms in meiner Android-Anwendung dynamisch einstellen. Dafür benutze ich

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT));

und ebenso. Bis jetzt funktioniert das einwandfrei, aber ich verspüre gelegentlich einen ungewollten kurzen Orientierungswechsel, wenn ich von einer Aktivität zur nächsten gehe. Das Problem tritt auf, wenn ich das Gerät so halte, dass der Sensor die Ausrichtung anders als die programmgesteuert gewählte einstellt.

Ich konnte das Problem in der folgenden einfachen Anwendung reproduzieren, die im Wesentlichen aus zwei Aktivitäten besteht, bei denen der Benutzer per Knopfdruck zur anderen Aktivität wechselt. Der Einfachheit halber habe ich die Ausrichtung in den Aktivitäten immer auf Querformat festgelegt. Beachten Sie jedoch, dass ich die Ausrichtung zur Laufzeit auswählen muss, damit das Verschieben der Ausrichtungseinstellung in das Manifest für mich keine Wirkung hat.

Jeder Vorschlag, wie dieser ungewollte gelegentliche Bildschirmausrichtungswechsel vermieden werden kann, wäre großartig.

Vielen Dank

martin

public class A_Activity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_a);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    Button b = (Button) findViewById(R.id.button_a);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            startActivity(new Intent(A_Activity.this, B_Activity.class));
        }
    });

}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

}
}  

Die zweite Aktivität - B_Activity - wird auf die gleiche Weise definiert, indem A_Activity beim Drücken einer Taste gestartet wird

Die Layouts sind so einfach wie

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
    android:id="@+id/button_a"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="Click A" />

</LinearLayout>

und das Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.switchactivitytest"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".A_Activity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="A Activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".B_Activity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="B Activity" >
    </activity>
</application>

</manifest>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage