У меня 2 фрагмента в альбомном режиме, против 1 фрагмент в портретном. Я загружаю указанные фрагменты с помощью метода xml. В любом случае, я проверяю наличие второго фрагмента в первом действии и либо запускаю действие второго фрагмента, либо вызываю метод непосредственно для второго фрагмента. Все работает нормально, однако, когда пользователь сначала вращает (создавая два фрагмента), а затем вращается обратно, моя проверка второго фрагмента теперь не равна нулю и нарушает логику, поскольку он был добавлен в backstack.
Как решить эту проблему? Возможно, мне нужно удалить фрагмент из стека истории в onPause ()? Или, может быть, каким-то образом предотвратить добавление второго фрагмента в бэкстэк.
FirstActivity:
public void onClick(View view) {
SecondFragment secondFragment = (SecondFragment) getSupportFragmentManager().findFragmentById(R.id.second_fragment);
if (secondFragment != null) { // * this will no longer be not null after rotating
// two pane layout : update second fragment
secondFragment.updateSecondFragmentView();
} else {
// one pane layout : start second activity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
}
SecondFragment: вы рекомендуете это?
@Override
public void onPause() {
super.onPause();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}