2010-12-31 8 views

Antwort

10

Check in Ihrer Android-Manifest-Datei, die Sie android:configChanges="orientation" auf der Aktivität geschrieben haben ..

+1

Beachten Sie, dass für den größten Teil dieser ist nicht das, was du machen willst. Für die meisten Anwendungen besteht die richtige Vorgehensweise darin, Ihre Konfiguration in onSaveInstanceState() aufzuschreiben und nach der Konfigurationsänderung wiederherzustellen. – jjb

+0

thanks.but zeichne ich Grafik auf Leinwand onclick Ereignis der Schaltfläche so wie kann ich Zustand der Leinwand speichern. – chirag

7

Ich würde empfehlen, Fragmente zu verwenden. Sie können einfach setRetainInstance(true) verwenden, um mitzuteilen, dass Sie Ihr Fragment behalten möchten.

+0

Das verhindert nicht, dass die Host-Aktivität und die Fragment-Ansichten zerstört werden, obwohl –

69

Es gibt verschiedene Möglichkeiten, es zu tun, aber als here gegeben,

android:configChanges="keyboardHidden|orientation|screenSize" 

mit, wie Sie benötigen, können Sie stattdessen für die Konfigurationsänderungen hören. Sie reagieren dann auf diese Änderungen, indem Sie onConfigurationChanged überschreiben und setContentView aufrufen.

So habe ich es gemacht, aber ich wäre daran interessiert, die Gedanken anderer Leute zu kennen.

+2

dieses funktioniert, screenSize hat es für mich getan. – PawelP

+0

in meinem Fall sollte ich setContentView nicht verwenden und onConfigurationChanged sollte leer sein und nur den Super aufrufen. –

+0

screenSize funktioniert für mich. – Neela

7

hinzufügen android:configChanges="keyboardHidden|orientation" zu Ihrem activity

13

Ihre Aktivität im AndroidManifest.xml wie folgt definieren:

<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> 
6

Für Xamarin Benutzer,

Um den Neustart der Anwendung auf Orientierungsänderung in Android zu vermeiden, Fügen Sie
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize zum Aktivitätsattribut aller Aktivitätsklassen hinzu. Zum Beispiel unten ist meine 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 
     } 
    } 
+0

mindestens erwähnen, das ist Xamarin C# -Code und nicht Java – SadeepDarshana

+1

Danke. Sehr hilfreich. Nur eine Anmerkung: Die Antwort besagt, dass ConfigurationChanges zu MainActivity hinzugefügt werden soll. Sie sollten dies eigentlich zu jeder Aktivität in Ihrem Projekt hinzufügen, in der Sie verhindern möchten, dass es neu gestartet wird. Nicht nur MainActivity. – Metalogic

3

Ich versuche android:configChanges="keyboardHidden|orientation|screenSize" in Aktivitäts-Tag zu schreiben, aber in nicht funktioniert.

Ich versuche eine Menge Methoden und nichts funktioniert, bis ich android:configChanges="keyboardHidden|orientation|screenSize" für alle App-Aktivitäten hinzugefügt und es funktioniert perfekt.

2

Fügen Sie dies zu 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"/> 
0

nur android hinzufügen: configChanges = "keyboardHidden | Orientierung | Bildschirmgröße" für alle App-Aktivitäten in der Manifest-Datei

Verwandte Themen