12

Sono nuovo nello sviluppo di Android. Dispongo di schermi separati per la modalità verticale e orizzontale. Quando cambio l'orientamento, lo schermo corrispondente viene caricato e l'attività viene riavviata. Ora non voglio riavviare la mia attività quando cambio l'orientamento, ma dovrei caricare il suo schermo corrispondente (axml).impedisce il riavvio dell'attività quando cambia l'orientamento

ho cercato

[Activity (Etichetta = "MyActivity", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)]

la linea di cui sopra si ferma l'attività sempre riavviato ma carica lo stesso schermo (axml). Si prega di suggerire. grazie

risposta

40

scrivere questo codice nella vostra attività

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     setContentView(R.layout.landscapeView); 

    } else { 
     setContentView(R.layout.portraitView); 
    } 
} 

e anche aggiungere questa riga nel file manifesto

android:configChanges="orientation|keyboardHidden|screenSize" 

Quindi questo gestirà entrambe le cose, non riavvierà la tua attività e caricherà il layout secondo le tue modifiche di orientamento.

+0

11-07 13: 44: 47.143: E/AndroidRuntime (2586): Causato da: java .lang.IllegalStateException: è consentito avere un solo MapView in un MapActivity Mostra questo errore quando includo questo –

+0

Dove aggiungere questi codici in mainActivity OPPURE ciascun Frammento nell'attività e R.layout.landscapeView e R.layout .portraitView sono due diversi layout – Kailas

+0

wow! Tutto quello che volevo! :) –

5

Dal momento che è stato specificato per il sistema operativo che si desidera gestire l'orientamento cambiare te stesso, ora si devono gestire eventuali modifiche al layout da soli, come questo:

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
     setContentView(R.layout.portrait); 
     //do other initialization 
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     setContentView(R.layout.landscape); 
     //do other initialization 
    } 
} 
+1

Il metodo OnCreate() viene richiamato per le modifiche di orientamento. – sujay

+0

@surjay Devi aggiungere 'android: configChanges =" keyboardHidden | orientation | screenSize' nel tuo CopsOnRoad

Problemi correlati