12

Jestem nowy w rozwoju Androida. Mam osobne ekrany dla trybu portretowego i poziomego. Gdy zmieniam orientację, odpowiedni ekran zostanie załadowany i aktywność wznowi działanie. Teraz nie chcę, aby moja aktywność ponownie się uruchamiała po zmianie orientacji, ale powinna załadować odpowiedni ekran (axml).zapobiega ponownemu uruchamianiu aktywności po zmianie orientacji

Próbowałem

[aktywny (oznaczenie = "MyActivity" ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)]

powyższa linia zatrzymuje działanie zaczyna ponownie uruchomiony, ale ładuje ten sam ekran (axml). Proszę sugerować. dzięki

Odpowiedz

40

napisać ten kod w swojej działalności

@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); 
    } 
} 

a także dodać tę linię w pliku manifestu

android:configChanges="orientation|keyboardHidden|screenSize" 

A więc zajmie się obydwoma rzeczami, nie wznowi twojej aktywności i załaduje układ zgodnie ze zmianami orientacji.

+0

11-07 13: 44: 47.143: E/AndroidRuntime (2586): Spowodowane przez: java .lang.IllegalStateException: Możesz mieć tylko jednego MapView w MapActivity Pokazuje ten błąd, gdy dołączam ten numer –

+0

Gdzie dodać ten kod w głównym akcie LUB w każdym fragmencie aktywności i R.layout.landscapeView i R.layout .portraitView to dwa różne układy: – Kailas

+0

wow! Wszystko, co chciałem! :) –

5

Od podałeś do systemu operacyjnego, który chcesz obsługiwać orientacja zmienia się, teraz trzeba obsługiwać żadnych zmian w układzie siebie coś takiego:

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

Metoda OnCreate() jest wywoływana w celu zmiany orientacji. – sujay

+0

@surjay Musisz dodać "android: configChanges =" keyboardHidden | orientation | screenSize' w swoim CopsOnRoad

Powiązane problemy