Android + предотвратить addToBackStack с фрагментом xml?

У меня 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);
}

person worked    schedule 07.11.2015    source источник


Ответы (1)


if (secondFragment != null && secondFragment.isVisible()) {
    // two pane layout : update second fragment
    secondFragment.updateSecondFragmentView();
}

Кажется, это хорошо работает в моей ситуации.

person worked    schedule 07.11.2015