Фрагменты и изменение ориентации

Как правильно обрабатывать изменение ориентации при использовании фрагментов?

У меня есть альбомный макет, который содержит 2 фрагмента (экземпляры в коде в виде FrameLayouts). Когда я переключаюсь в портретный режим (макет которого содержит только один FrameLayout, содержащий только левую панель), правый фрагмент больше не требуется.

Я получаю сообщение об ошибке:

E/AndroidRuntime(4519): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f060085 for fragment myFragment{418a2200 #2 id=0x7f060085}

что предполагает, что моя деятельность пытается повторно прикрепить фрагмент туда, где он был до изменения ориентации, но поскольку представление, содержащее фрагмент, не существует в портретном режиме, выдается ошибка .

Я пробовал следующие методы скрытия/удаления/отсоединения, но все равно получаю сообщение об ошибке. Как правильно сказать фрагменту, что он больше не нужен, и не пытаться отображать?

@Override
public void onCreate(Bundle b) {
    super.onCreate(b);
    Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragholder2);

    //rightPane is a framelayout that holds my fragment.
    if (rightPane == null && f != null) {
         FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
         ft.hide(f);     // This doesnt work
         ft.remove(f);   // neither does this
         ft.detach(f);   // or this
         ft.commit;
    }
}
32
задан valerybodak 23 March 2015 в 07:48
поделиться