Макет просмотра не обновляется при изменении ориентации в android

Я бы хотел, чтобы мой макет VIEW изменялся при изменении ориентации.

Мой манифест настроен с помощью: android: configChanges = "keyboardHidden | Ориентация" для действия.

У меня есть res / layout-land , res / layout-port .

У меня есть onConfigurationChanged в моем Activity ( он вызывается при вращении).

В моем Activity у меня есть ViewFlipper , а внутри него LinearLayouts .

Когда я запускаю Действие в режиме порта или суши, расположение обзора правильное (согласно в мои res / layout - ???? файлы).

Но когда я уже нахожусь в Activity и поворачиваю телефон, мой макет просмотра не изменяется . Экран вращается, и onCreate действия не вызывается, как должно быть, onConfigurationChanged вызывается в Activity , но экран всегда перерисовывается с помощью LinearLayout , который был загружен при запуске Activity .

У меня такое ощущение, что я что-то упускаю в onConfigurationChanged , но не незнаю что. Думаю, мне нужно вызвать какую-то функцию на ViewFlipper или на LinearLayout , который находится внутри. Какие функции мне следует вызывать?

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

Я пытался добавить flipper = new ViewFlipper (getApplicationContext ()); в onConfigurationChanged () , но после поворота все стало черным. Думаю, мне придется вызвать initLayout, но это все пересчитает (а это именно то, что я не хочу делать, и поэтому я пытаюсь сделать это с помощью onConfigurationChanged , а не по умолчанию android "dropMyActivity & createANewActivity"

РЕШЕНИЕ: Раньше я думал, что могу активировать обновление макета при повороте, но мне кажется, что мне нужно заново создать макет с текущим контекстом (после изменения ориентации)

@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();
}
9
задан luizfzs 17 January 2013 в 01:53
поделиться