2012-12-14 7 views
11

In meiner App habe ich eine mit mehreren Fragment s alle im Hochformat mit Ausnahme einer spezifischen Fragment. Ich bewege mich zwischen Fragment s durch Fußzeile View s in der FragmentActivity.Wo in einem Android-Fragment auf Orientierungsänderung zu überprüfen

Ich habe ein anderes Layout (tatsächlich haben den gleichen Namen, aber andere Widget View s) für diese spezifische Fragment, wenn es eine Orientierung Änderung ist. Im Landscape-Modus möchte ich bestimmte Widgets aus dem Fragment Layout View und der Fußzeile View der entfernen und wenn wieder im Hochformat, fügen Sie alles zurück.

Ich habe alle Daten, die ich brauche in onSavedInstanceState() in der Fragment gespeichert, aber wo sollte ich möglicherweise für eine Orientierungsänderung testen, so dass ich die View s angemessen wiederherstellen kann?

nicht sicher, ob ich onConfigurationChange() und testen es in meinem Fragment außer Kraft setzen kann, weil ich habe die android nicht: configChanges = „Orientierung“ in meinem Android Manifest.

Antwort

22

Halten Sie dieses Häkchen bei onCreate(). Wenn Sie Ihr Gerät drehen, wird die App neu gestartet. OnCreate wird also beim Neustart der App erneut aufgerufen.

int currentOrientation = getResources().getConfiguration().orientation; 
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) { 
    // Landscape 
} 
else { 
    // Portrait 
} 
+0

danke. gib mir andere Ideen, was ich versuchen soll. – irobotxxx

+4

können Sie separate Xmls für Hoch- und Querformatansichten erstellen. Erstellen Sie einen Ordner namens "layout-land" in Ihrem "res" -Ordner und erstellen Sie einen XML-Ordner für Ihre Landschaftsansicht in diesem Ordner. Behalte die Namen der beiden xmls (Hochformat und Querformat) gleich. Ihre Ansichten werden automatisch angepasst. Achten Sie darauf, alle Widgets in jedem xml intakt zu halten (ändern Sie einfach die Sichtbarkeit der Widgets, die Sie in keiner der beiden Ansichten zu "GONE" brauchen). –

+0

vielen dank. aber eigentlich habe ich gerade aus meinem kommentar erkannt, ich meinte du antwort gibst mir andere ideen .. ich meinte es nicht wirklich als frage sondern bin froh das es passiert ist, weil ich die sichtbarkeitsoption View vergessen habe. :) – irobotxxx

7

Sie können die Änderungs Orientierung steuern durch zwingende onConfigurationChanged Funktion des Fragments als auch.

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 

     super.onConfigurationChanged(newConfig); 
     int currentOrientation = getResources().getConfiguration().orientation; 

     if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){ 
      Log.v("TAG","Landscape !!!"); 
     } 
     else { 
      Log.v("TAG","Portrait !!!"); 
     } 
    } 
Verwandte Themen