it-swarm.com.de

So vermeiden Sie einen Neustart der Aktivität, wenn sich die Ausrichtung auf Android ändert

Ich erstelle eine Android-App, in der ich eine Ansicht auf eine Leinwand zeichne. Wenn sich die Ausrichtung des Geräts ändert, wird die Aktivität neu gestartet. Ich will es nicht.

Wie kann ich vermeiden, die Aktivität neu zu starten, wenn sich die Ausrichtung ändert?

51
chirag

Es gibt verschiedene Möglichkeiten, dies zu tun, aber wie angegeben hier , mit

Android:configChanges="keyboardHidden|orientation|screenSize"

bei Bedarf können Sie stattdessen auf die Konfigurationsänderungen achten. Sie reagieren dann auf diese Änderungen, indem Sie onConfigurationChanged überschreiben und setContentView aufrufen.

So habe ich es gemacht, aber ich würde gerne die Gedanken anderer Leute kennenlernen.

78
Mike

Definieren Sie Ihre Aktivität in der AndroidManifest.xml wie folgt:

   <activity
        Android:name="com.name.SampleActivity"
        Android:configChanges="keyboardHidden|orientation|screenSize"
        Android:icon="@drawable/sample_icon"
        Android:label="@string/sample_title"
        Android:screenOrientation="portrait" >
    </activity>
15
Vikas

Überprüfen Sie in Ihrer Android-Manifestdatei, dass Sie Android:configChanges="orientation" über die Aktivität geschrieben haben.

11
ninjasense

Ich würde die Verwendung von Fragmenten empfehlen. Sie können einfach setRetainInstance(true) verwenden, um zu benachrichtigen, dass Sie Ihr Fragment behalten möchten.

7
Grimmace

Fügen Sie Android:configChanges="keyboardHidden|orientation" zu Ihrer activity hinzu

7
Avadhani Y

Für Xamarin-Benutzer

Um zu vermeiden, dass die Anwendung bei der Änderung der Ausrichtung in Android neu gestartet wird, fügen Sie Folgendes hinzu
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize an Activity-Attribut aller Activity-Klassen . Im Folgenden finden Sie beispielsweise meinen Demo-Code

    [Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
        //Some code here
        }
    }
6
Tushar patel

Ich habe versucht, Android:configChanges="keyboardHidden|orientation|screenSize" im Activity-Tag zu schreiben, funktioniert aber nicht.

Ich habe viele Methoden ausprobiert, aber nichts funktioniert, bis ich Android:configChanges="keyboardHidden|orientation|screenSize" für alle App-Aktivitäten hinzugefügt habe und es perfekt funktioniert.

6

Fügen Sie dies allen Ihren Aktivitäten im Manifest hinzu.

Android:configChanges="orientation|screenSize"

Beispiel:

<activity Android:name=".activity.ViewActivity"
        Android:label="@string/app_name"
        Android:configChanges="orientation|screenSize"/>
3
Mohsen mokhtari

So vermeiden Sie einen Neustart bei keyboardHidden|orientation - Wie kann ich die Orientierungsänderung in Android deaktivieren?
Bitte folgen Sie der Android-API-Anleitung - Bearbeiten von Laufzeitänderungen
Verwenden der Anwendungsklasse - Aktivitätsneustart bei Rotation Android

2
Rupesh Yadav

fügen Sie einfach Android: configChanges = "keyboardHidden | orientation | screenSize" für alle App-Aktivitäten in der Manifestdatei hinzu

0
Charpman

Erklären Sie dies in Ihrer AndroidManifest.xml

<activity Android:name=".complex_examples.VideoPlayerActivity"
            Android:configChanges="keyboard|keyboardHidden|orientation
                                  |screenSize|screenLayout|smallestScreenSize|uiMode"
            Android:launchMode="singleTop"/>

Aber seien Sie vorsichtig, Dokumentation für Android-Entwickler sagt, dass Sie dies nur tun sollten, wenn es keine besseren Optionen gibt.

Hinweis: Die Verwendung dieses Attributs sollte vermieden und nur als letztes verwendet werden Resort. Weitere Informationen hierzu finden Sie unter Änderungen der Laufzeitumgebung darüber, wie Sie einen Neustart aufgrund einer Konfigurationsänderung ordnungsgemäß behandeln.

Wenn Sie sich sicher sind, können Sie die Konfigurationsänderungen selbst in der onConfigurationChanged () - Methode vornehmen.

0
Soon Santos