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();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
flipper
ist ein Verweis auf die Ansicht, die ursprünglich installiert wurde, das ist, was das problem verursacht. Sie müssen übergeben Sie die Ressource-ID des layout, die Sie wollen, nicht die alte Ansicht aus der Zeit vor dem Handy gedreht wurde. Die content-view wird dann gebunden werden, um die neue Ressource. Vielleicht so etwas wie dieses (modulo meine Vermutung bei deinem resource identifiers):setzen, dass in der android manifest. android:configChanges="orientation"
in diesem Fall probieren Sie dies, und setzen Ihr layout...