Ansicht layout nicht aktualisieren auf die Ausrichtung ändern in android

Möchte ich meine ANSICHT-layout angepasst auf die Ausrichtung ändern.

Mein Manifest ist eingerichtet mit: android:configChanges="keyboardHidden|orientation" auf die Aktivität.

Habe ich res/layout-land, res/layout-port.

Habe ich onConfigurationChanged in meinem Activity (es nennt sich "rotation").

In meinem Activity ich habe eine ViewFlipper im inneren habe ich LinearLayouts.

Als ich ANFANG der Activity im Hafen oder land-Modus, die Ansicht layout ist korrekt (nach
zu meiner res/layout-???? - Dateien).

Aber wenn ich schon in der Activity und ich das Telefon drehen, dann ist meine Ansicht nicht geändert. Der Bildschirm gedreht wird, und die onCreate Tätigkeit ist nicht genannt, wie es sein soll, die onConfigurationChanged heißt in der Activity, aber der Bildschirm ist immer neu gezeichnet wird, mit der LinearLayout geladen wurde, wenn der Activity gestartet.

Habe ich das Gefühl, dass ich verpasst etwas, das in der onConfigurationChanged, aber weiß nicht was. Ich glaube, ich benötigen, rufen Sie eine Funktion auf der ViewFlipper oder auf der LinearLayout dass in. Welche Funktionen sollte ich anrufen?

ViewFlipper flipper;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    flipper = new ViewFlipper(getApplicationContext());
    setContentView(flipper);
    initLayout();
}

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

void initLayout() {
    MyView myview = createMyView(0);
    flipper.addView(myview, 0);
    myview = createMyView(1);
    flipper.addView(myview, 1);
    myview = createMyView(1);
    flipper.addView(myview, 1);
}

Habe ich versucht, hinzuzufügen flipper = new ViewFlipper(getApplicationContext()); zu onConfigurationChanged() aber, dass alles schwarz nach der rotation. Ich denke, ich werde call initLayout, aber das würde alles neu berechnen (und das ist genau das, was ich nicht tun wollen, und das ist, warum ich bin versucht, es zu tun mit onConfigurationChanged im Gegensatz zu den android-Standard "dropMyActivity & createANewActivity"

LÖSUNG:
Bisher dachte ich, ich kann auslösen, das layout aktualisiert werden, die auf die rotation, aber es scheint, muss ich neu erstellen das layout mit dem aktuellen Kontext (nach der die änderung der Ausrichtung)

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.category_flipper);
    ViewFlipper oldFlipper = viewFlipper;
    viewFlipper = (ViewFlipper)findViewById(R.id.categoryFlipper);
    for (int i = 0; i < 3; i++) {
        final CardLayout cl = new CardLayout(this, cardData[i]);
        viewFlipper.addView(cl);
    }
    cardData[viewIndex].restorePlayer();
    viewFlipper.setDisplayedChild(viewIndex);
    oldFlipper.removeAllViews();
}
InformationsquelleAutor Gavriel | 2011-04-15
Schreibe einen Kommentar