
Vidar Vestnes
Ich habe eine Anwendung, die ich nur im Hochformat verwenden möchte, also habe ich android:screenOrientation=”portrait” im Manifest-XML definiert. Das funktioniert OK für die HTC Magic Telefon (und verhindert auch Ausrichtungsänderungen auf anderen Telefonen).
Aber ich habe ein Problem mit der HTC G1 Telefon, wenn ich die Hardware öffne QWERTY Tastatur (nicht die virtuelle Tastatur). Meine Aktivität bleibt im Hochformat, aber sie scheint neu gestartet zu werden und verliert alle ihre Zustände. Das passiert bei der nicht HTC Hero Ausführung.
Meine Anwendung ist ziemlich groß, daher möchte ich nicht, dass sie neu gestartet wird und alle Zustände verliert, wenn die Tastatur geöffnet wird. Wie kann ich das verhindern?

Verwicklungen
Update April 2013: Tun Sie dies nicht. Es war keine gute Idee im Jahr 2009, als ich die Frage zum ersten Mal beantwortete, und es ist jetzt wirklich keine gute Idee. Siehe diese Antwort von Hackbod aus Gründen:
Vermeiden Sie das Neuladen von Aktivitäten mit Asynctask bei Orientierungsänderung in Android
Addieren android:configChanges="keyboardHidden|orientation"
zu Ihrer AndroidManifest.xml. Dies teilt dem System mit, welche Konfigurationsänderungen Sie selbst vornehmen werden – in diesem Fall, indem Sie nichts tun.
<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
Siehe Entwicklerreferenz Konfigurationsänderungen für mehr Details.
Ihre Anwendung kann jedoch jederzeit unterbrochen werden, z. B. durch einen Anruf. Daher sollten Sie wirklich Code hinzufügen, um den Status Ihrer Anwendung zu speichern, wenn sie angehalten wird.
Aktualisieren: Ab Android 3.2 müssen Sie auch “screenSize” hinzufügen:
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
Aus dem Entwicklerhandbuch Behandeln Sie die Konfigurationsänderung selbst
Achtung: Ab Android 3.2 (API-Level 13) ändert sich die „Bildschirmgröße“ auch, wenn das Gerät zwischen Hoch- und Querformat wechselt. Wenn Sie also bei der Entwicklung für API-Ebene 13 oder höher (wie von den Attributen minSdkVersion und targetSdkVersion deklariert) Runtime-Neustarts aufgrund von Ausrichtungsänderungen verhindern möchten, müssen Sie den Wert „screenSize“ zusätzlich zum Wert „orientation“ einschließen. Das heißt, Sie müssen deklarieren
android:configChanges="orientation|screenSize"
. Wenn Ihre Anwendung jedoch auf API-Ebene 12 oder niedriger abzielt, verarbeitet Ihre Aktivität diese Konfigurationsänderung immer selbst (diese Konfigurationsänderung startet Ihre Aktivität nicht neu, selbst wenn sie auf einem Gerät mit Android 3.2 oder höher ausgeführt wird).

überschmekel
Sie müssen AndroidManifest.xml als Intrications (zuvor Ashton) erwähnt ändern und sicherstellen, dass die Aktivität das onConfigurationChanged-Ereignis so verarbeitet, wie Sie es möchten. So sollte es aussehen:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Ich habe immer festgestellt, dass Sie beides brauchen
android:screenOrientation="nosensor" android:configChanges="keyboardHidden|orientation"

Dmitri Zaytsev
Wie gesagt eingestellt android:configChanges
Ihrer Aktivität (in der Manifestdatei) an keyboardHidden|orientation
und dann:
1) Überschreiben onConfigurationChanged()
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//here you can handle orientation change
}
2) Fügen Sie diese Zeile zu Ihrer Aktivität hinzu onCreate()
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Es ist besser, als dieselbe Zeile hinzuzufügen onConfigurationChanged
da Ihre App in den Hochformatmodus und dann wieder in das Querformat wechselt (dies geschieht nur einmal, ist aber ärgerlich).
Auch Sie können einstellen android:screenOrientation="nosensor"
für Ihre Tätigkeit (im Manifest). Aber Auf diese Weise können Sie mit Orientierungsänderungen überhaupt nicht umgehen.
Benutze das..
android:screenOrientation="portrait"

Ziffer
Verwenden Sie in der OnCreate-Methode Ihrer Aktivität diesen Code:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Jetzt wird Ihre Ausrichtung auf Hochformat eingestellt und ändert sich nie.

Peter Mortensen
Fügen Sie in der Datei AndroidManifest.xml für jede Aktivität, die Sie sperren möchten, die letzte hinzu screenOrientation
Linie:
android:label="@string/app_name"
android:name=".Login"
android:screenOrientation="portrait" >
Oder android:screenOrientation=”Landschaft”.
9646200cookie-checkWie deaktiviere ich die Ausrichtungsänderung auf Android?yes
Versuchen Sie auch, hier nachzusehen: stackoverflow.com/questions/2366706/…
– Andy Weinstein
7. Mai 2012 um 19:56 Uhr
mögliches Duplikat von Wie kann die Anwendung die Änderung der Bildschirmausrichtung in Android vollständig ignorieren?
– Peter O.
15. Februar 2013 um 18:19 Uhr