2010-12-31 16 views

risposta

10

Verificare nel file manifest Android che hai scritto android:configChanges="orientation" sull'attività ..

+1

Si noti che, per la maggior parte, questo non è quello che vuoi fare. Per la maggior parte delle app, l'approccio corretto è quello di annotare la configurazione in onSaveInstanceState() e ripristinarla dopo la modifica della configurazione. – jjb

+0

thanks.but sto disegnando il grafico su canvas onclick evento del pulsante quindi come posso salvare lo stato della tela. – chirag

7

Consiglierei l'uso di Fragments. Puoi semplicemente usare setRetainInstance(true) per notificare che vuoi mantenere il tuo frammento.

+0

Questo non impedisce che l'attività dell'host e le viste frammento vengano distrutte anche se –

69

Ci sono vari modi per farlo, ma come dato here, utilizzando

android:configChanges="keyboardHidden|orientation|screenSize" 

di cui hai bisogno, consente di ascoltare, invece, per le modifiche di configurazione. Quindi rispondi a queste modifiche ignorando onConfigurationChanged e chiamando setContentView.

Questo è il modo in cui l'ho fatto, ma sarei interessato a conoscere i pensieri degli altri.

+2

funziona, screenSize l'ha fatto per me. – PawelP

+0

nel mio caso, non dovrei usare setContentView e onConfigurationChanged dovrebbe essere vuoto e chiamare solo il super. –

+0

screenSize funziona per me. – Neela

7

Aggiungi android:configChanges="keyboardHidden|orientation" al activity

13

definire la vostra attività nel AndroidManifest.xml come questo:

<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

Per gli utenti Xamarin,

Per evitare il riavvio dell'applicazione sul cambiamento dell'orientamento in Android, aggiungi
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize all'attributo Activity di tutte le classi di attività. Per esempio, sotto è il mio codice demo

[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

menziona almeno questo codice Xamarin C# e non Java – SadeepDarshana

+1

Grazie. Molto utile. Una sola nota: la risposta dice di aggiungere ConfigurationChanges a MainActivity. In effetti, dovresti aggiungerlo a tutte le attività del tuo progetto in cui desideri impedirne il riavvio. Non solo MainActivity. – Metalogic

3

provo a scrivere android:configChanges="keyboardHidden|orientation|screenSize" nel tag attività, ma in non funziona.

Provo un sacco di metodi e niente funziona finché non ho aggiunto android:configChanges="keyboardHidden|orientation|screenSize" per tutte le attività dell'app e funziona perfettamente.

2

Aggiungi questo a tutte le tue attività nel manifest.

android:configChanges="orientation|screenSize" 

Esempio:

<activity android:name=".activity.ViewActivity" 
     android:label="@string/app_name" 
     android:configChanges="orientation|screenSize"/> 
0

Basta aggiungere Android: configChanges = "keyboardHidden | orientamento | Screensize" per tutte le attività delle applicazioni nel file manifesto