Ich habe eine App, die nur im Hochformat funktioniert, und ich habe die Änderungen in meiner Manifest-Datei für jede Aktivität die Ausrichtung auf Hochformat vorgenommen. Aber wenn ich das Gerät rotiere, wird die Aktivität erneut erstellt. Wie kann man die Aktivität nicht zerstören?Android, wie kann ich die Aktivität nicht zerstören, wenn ich das Gerät drehe?
Antwort
Für API 12 und unter:
android:configChanges="orientation"
Add "Bildschirmgröße" hinzufügen, wenn Sie API sind Targeting-13 oder über, weil, wenn die Orientierung ändert so auch Ihre Bildschirmgröße, sonst neue Geräte werden auch weiterhin um deine Aktivität zu zerstören. Siehe Egg Antwort unten für weitere Informationen zur Verwendung von „Bildschirmgröße“
android:configChanges="orientation|screenSize"
auf Ihre Aktivität in AndroidManifest.xml. Auf diese Weise wird Ihre Aktivität nicht automatisch neu gestartet. Weitere Informationen finden Sie unter the documentation
Die Aktivität wird erneut gestartet. Ich weiß nicht, was ist der Punkt, all die Dinge zu tun, die getan werden müssen, wenn die Aktivität rotiert, auch wenn es nicht virtuell rotiert. Gibt es eine Möglichkeit, die Meldungen zu deaktivieren, die der Sensor an das Betriebssystem über die Rotation oder so etwas sendet, um dieses Problem von seiner Wurzel aus zu beheben? – Vasil
auf welchem Gerät programmieren Sie? Denken Sie daran, dass zum Beispiel das Herausgleiten der Tastatur auch Ihre Aktivität neu starten könnte ... (wenn das der Grund ist, confChanges auf "keyboardHidden | orientation" zu setzen) –
dies ist die richtige Antwort Vielen Dank –
Sehen Sie sich diesen Code in Floating Image an. Es hat die interessanteste Art, die Bildschirmdrehung überhaupt zu handhaben. http://code.google.com/p/floatingimage/source/browse/#svn/trunk/floatingimage/src/dk/nindroid/rss/orientation
Aus dem offiziellen Dokument flurin sagte
Hinweis: Wenn Ihre Anwendung API-Level 13 oder höher Ziele (wie erklärt durch die minSdkVersion und targetSdkVersion Attribute), dann sollten Sie auch die „Bildschirmgröße erklären "Konfiguration, weil sich auch ändert, wenn ein Gerät zwischen Hoch- und Querformat wechselt.
Also, wenn Sie Ihre App Ziele API Level 13 oder höher, können Sie diese Konfiguration gesetzt sollte stattdessen:
android:configChanges="orientation|screenSize"
Die richtige Lösung ist
android: configChanges = "Orientierung | Bildschirmgröße"
Android Dokumentation:
Die aktuell verfügbare Bildschirmgröße hat sich geändert. Dies stellt eine Änderung der derzeit verfügbaren Größe relativ zum aktuellen Seitenverhältnis dar und ändert sich daher, wenn der Benutzer zwischen Hoch- und Querformat wechselt. Wenn Ihre Anwendung jedoch auf die API-Stufe 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 Android 3.2- oder höherem Gerät ausgeführt wird).
schreiben in manifest:
android:configChanges="orientation|screenSize|keyboardHidden"
und diese in der Aktivität außer Kraft setzen, die Ihr Problem gelöst:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
Warum sollte die onConfigurationChanged-Methode überschrieben und die ursprüngliche Implementierung aufgerufen werden, um etwas Nützliches zu tun? – ricosrealm
ich dies für eine etwas war in Unordnung und relized dann, dass in der Manifest-Datei Ich habe die configChanges auf der Anwendungsebene und nicht auf der Aktivitätsebene gesetzt. Hier ist, wie der Code aussieht, wenn er für mich richtig funktioniert.
Sie sollten Code in Ihrem Beitrag anstelle eines Bildes teilen. –
Bitte ** [bearbeiten] ** Ihre Post und zeigen Sie den tatsächlichen Manifest-Code als Text anstelle von Screenshots. Andere können Ihre Bilder nicht kopieren und einfügen. [Siehe hier] (https://meta.stackoverflow.com/a/285557/1402846) für Details. Vielen Dank. – Pang
- 1. Wie drehe ich eine Bitmap in Android?
- 2. Wie kann man eine Aktivität in Android zerstören?
- 3. Mein BLE-Gerät wird getrennt, wenn ich die Aktivität aktiviere
- 4. Wie kann ich die gleiche Aktivität fortsetzen?
- 5. Wie drehe ich ein Bild in JAVA?
- 6. Android, Wie kann ich BLE Gerät gekoppeltes Gerät machen (gebunden)
- 7. Android: Wie kann ich auf einem Gerät, das ich nicht habe, auf Fehler prüfen?
- 8. Wie kann ich die Symbolleiste in Android-Aktivität deaktivieren?
- 9. Wie drehe ich Libstreaming Video Preview?
- 10. Wie kann ich die aktuelle Aktivität beenden, wenn ich eine Suche in Android durchführe?
- 11. Wie kann ich auslösen: dependent => zerstören
- 12. kann nicht Aktivität zerstören (Dienst nicht registriert ist)
- 13. Wie kann ich THREEJS Scene zerstören?
- 14. Wie drehe ich ein div mit Raphael.js?
- 15. Wie drehe ich einen gluCynlinder in OpenGL?
- 16. Wie kann ich die imageflow jquery Plugin-Instanz zerstören?
- 17. Wie kann ich meinen App-Status speichern, wenn das Android-System die App beendet?
- 18. Aktivität onCreate() aufgerufen, wenn OTG-Gerät
- 19. Wie kann ich erkennen, ob das Gerät ein Android-Gerät ist?
- 20. derzeit keine Aktivität zerstören, wenn Stopp nicht versuchen Faden
- 21. Wie kann ich die Codevorlage in Android verwenden, wenn ich ein Projekt über die Befehlszeile erstelle?
- 22. Wie kann ich eine kontinuierliche Aktivität auf Android spielen/pausieren?
- 23. Android-Schaltfläche kann die Aktivität nicht starten
- 24. Wie drehe ich ein Etikett in C#?
- 25. Vollbild Aktivitätsassistent Aktivität. Wie kann ich verhindern, dass die Aktionsleiste angezeigt wird, wenn ich mit dem Gerät interagiere?
- 26. Kann Aktivität ComponentInfo nicht instanziieren. Ich habe die Klasse
- 27. Wie kann ich programmatisch wissen, ob das Android-Gerät Soft-Navigationstasten hat oder nicht?
- 28. Wie kann überprüfen, Android-Gerät Root-Gerät?
- 29. Sie nicht den Chronometer stoppen, wenn ich die Aktivität
- 30. Hintergrund Farbübergang, wenn ich die Aktivität verlassen
Dies wird empfohlen, oft gegen Sie Ihre Anwendungen Ausrichtung programmatisch mit so etwas wie Einstellung versuchen könnte: setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); – stealthcopter
Warum würde es gegen sein? Nehmen wir an, wir haben einen Dienst, der 2 Sekunden dauert. Wenn die Aktivität jedes Mal zerstört wird, läuft dieser Dienst jedes Mal weiter, während ich ihn nur einmal ausführen muss. –