Проблема с обратным стеком Android при первом добавлении фрагмента с последующей его заменой и последующим нажатием кнопки "Назад"

У меня есть 3 фрагмента A, B & C и один вид деятельности. Сначала я добавляю фрагмент A, используя метод replace() следующим образом:

 getSupportFragmentManager()
            .beginTransaction()
            .replace(android.R.id.content, new A())
            .commit(); 

Затем, так как я хочу видеть вид A из полупрозрачного вида BI, я добавляю фрагмент B вместо его замены. Кроме того, добавление этой транзакции в стек стека, так как я хочу, чтобы при нажатии назад пользователь был перемещен обратно в A.

getSupportFragmentManager().beginTransaction()
                        .add(android.R.id.content, new B())
                        .addToBackStack(null)
                        .commit();

Теперь я заменяю фрагмент B на C, добавляя эту транзакцию в backstack:

getSupportFragmentManager().beginTransaction()
                                .replace(android.R.id.content, new C())
                                .addToBackStack(null)
                                .commit();

В этот момент при вызове метода replace() onDestroyView () фрагмента A вызывается вместо B, и, следовательно, нажатие кнопки "назад" переводит меня во фрагмент A вместо B. При повторном нажатии назад он остается на том же фрагменте A. Нажатие назад в третий раз заканчивает свою деятельность.

Короче говоря, когда пользователь нажимает обратно на фрагмент C, он отображает фрагмент A вместо B. Это происходит только тогда, когда я использую add для некоторых транзакций и замену для других. Использование только add или только replace для всех транзакций работает нормально, но тогда мне нужно использовать add только потому, что я хочу увидеть предыдущий фрагмент A в полупрозрачном виде фрагмента B.

Есть идеи, чтобы решить это?

0 ответов

Другие вопросы по тегам