Каков правильный способ обработки изменения ориентации при использовании фрагментов?
У меня есть ландшафтный макет, содержащий 2 фрагмента (созданный в коде FrameLayout
s). Когда я переключаюсь в портретный режим (макет которого содержит только один FrameLayout
, который содержит только левую панель), фрагмент правой руки больше не требуется.
Я получаю сообщение об ошибке:
E/AndroidRuntime(4519): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f060085 for fragment myFragment{418a2200 #2 id=0x7f060085}
который предположил, что моя деятельность пытается повторно присоединить фрагмент, где он был до изменения ориентации, но поскольку представление, содержащее фрагмент, не существует в портретном режиме, возникает ошибка.
Я пробовал следующие методы hide/remove/detach, но все равно получаю ошибку. Каков правильный способ рассказать фрагмент, он больше не нужен и не пытается отображать?
@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;
}
}