Ich habe eine App, die nur im Hochformat funktioniert, und ich habe die Änderungen in meiner Manifestdatei für jede Aktivität so vorgenommen, dass die Ausrichtung Hochformat ist. Wenn ich das Gerät drehe, wird die Aktivität erneut erstellt. Wie kann man die Aktivität nicht zerstören?
80
Antworten:
Für API 12 und niedriger : Hinzufügen
android:configChanges="orientation"
Fügen Sie "screenSize" hinzu, wenn Sie auf API 13 oder höher abzielen , da neue Geräte Ihre Aktivität weiterhin zerstören, wenn sich Ihre Ausrichtung und Ihre Bildschirmgröße ändern. Weitere Informationen zur Verwendung von "screenSize" finden Sie in der Antwort von Egg unten.
android:configChanges="orientation|screenSize"
zu Ihrer Aktivität in AndroidManifest.xml. Auf diese Weise wird Ihre Aktivität nicht automatisch neu gestartet. Weitere Informationen finden Sie in der Dokumentation
quelle
Aus dem offiziellen Dokument sagte Flurin:
Wenn Ihre App auf API-Level 13 oder höher abzielt, sollten Sie stattdessen diese Konfiguration festlegen:
android:configChanges="orientation|screenSize"
quelle
Die richtige Lösung ist
android:configChanges="orientation|screenSize"
Android-Dokumentation:
quelle
Ich habe dies ein wenig durcheinander gebracht und dann erneut festgestellt, dass ich in der Manifest-Datei die configChanges auf Anwendungsebene und nicht auf Aktivitätsebene platziert habe. So sieht der Code aus, wenn er für mich richtig funktioniert.
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
quelle
Jetzt, da Android geteilten Bildschirm unterstützt ("Multi-Window" im Android-Sprachgebrauch), möchten Sie wahrscheinlich auch screenSize | smallScreenSize | screenLayout | Ausrichtung hinzufügen. Um Rotation und geteilten Bildschirm zu handhaben, sollten Sie in Android: configChanges so etwas tun
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
quelle
Sehen Sie sich diesen Code in Floating Image an. Es hat die interessanteste Art, mit der Bildschirmdrehung umzugehen, die es je gab. http://code.google.com/p/floatingimage/source/browse/#svn/trunk/floatingimage/src/dk/nindroid/rss/orientation
quelle
schreibe in Manifest:
android:configChanges="orientation|screenSize|keyboardHidden"
und überschreiben Sie dies in Aktivitäten, die Ihr Problem gelöst haben:
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
quelle