2012-03-05 10 views
31

Sto usando . In questo, quando sto passando da LandScape a Portrait, si chiama if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) e si passa a Portrait da LandScape. Ma quando sto passando da Portrait a Land-Scape, non sta cambiando in LandScape perché chiama if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) così, non sta cambiando da LandScape a Portrait. Per favore aiuto.Come utilizzare onConfigurationChanged() e newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE in Android 2.3.3

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

     //int orientation = this.getResources().getConfiguration().orientation; 

     if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      Log.d("Entered to change as Portrait ","PPPPPPPPPPPPPPPPP"); 
      setContentView(R.layout.settings); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Log.d("Entered to change as LandScape ","LLLLLLLLLLLLLLLLLLLL"); 
      setContentView(R.layout.settings); 
     } 

    } 

risposta

39

Basta scrivere il codice sottostante nel onConfigurationChanged metodo e di prova

if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){ 

    Log.e("On Config Change","LANDSCAPE"); 
}else{ 

    Log.e("On Config Change","PORTRAIT"); 
} 

e scrivere il android:configChanges="keyboardHidden|orientation" nel file manifiest come questo

<activity android:name="TestActivity" 
      android:configChanges="keyboardHidden|orientation"> 

funziona al mio fianco, spero che ti aiuti.

Se siete su tablet anche aggiungere |screenSize-android:configChanges

+12

Se siete su tablet anche aggiungere '| screenSize' ad Android: configChanges –

3

Il problema riguarda lo android:configChanges="orientation|keyboardHidden".

se si rimuove |keyboardHidden da androidmanifest.xml, quindi onConfigurationChanged viene attivato solo quando si ruota da orizzontale a verticale, non quando si passa da verticale a orizzontale (almeno nell'emulatore predefinito).

Spero che questo aiuti.

0

Scrivi questa linea nel Android manifest.XML di file:

<activity 
    android:name="MyActivity" 
    android:configChanges="orientation|keyboardHidden" /> 
15

si dovrebbe anche essere a conoscenza di:

Attenzione: A partire da Android 3.2 (API di livello 13), la "dimensione dello schermo" cambia anche quando il dispositivo passa dall'orientamento verticale a quello verticale . Pertanto, se si desidera impedire il riavvio del runtime a causa della modifica dell'orientamento durante lo sviluppo per il livello API 13 o successivo (come dichiarato dagli attributi minSdkVersion e targetSdkVersion), è necessario includere il valore "screenSize" oltre all'orientamento, . valore. Cioè, è necessario decalare android: configChanges = "orientation | screenSize". Tuttavia, se l'applicazione ha come target il livello API 12 o inferiore, l'attività sempre gestisce questa modifica della configurazione stessa (questa modifica di configurazione non riavvia l'attività, anche quando è in esecuzione su un dispositivo Android 3.2 o superiore).

0

Oltre alle risposte di cui sopra: Se l'override del metodo onConfigurationChanged in combinazione con l'aggiornamento del file manifesto che dici si sta gestendo il configurationchanges da soli. Quindi aggiungendo:

setContentView(R.layout.layout.xml); 

nel metodo onConfigurationChanged - in cui layout è il file di layout - risolverà il problema.

1

Scrivi sotto il codice nel file attività.

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

    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){ 
    Log.e("On Config Change","LANDSCAPE"); 
    } 
    else{ 
    Log.e("On Config Change","PORTRAIT"); 
    } 

} 

scrivere anche sotto il codice nel file manifest come segue:

<activity 
     android:name=".activities.TestActivity" 
     android:configChanges="orientation|screenSize|keyboardHidden" 
/> 
Problemi correlati