Проблема с обратным стеком 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.
Есть идеи, чтобы решить это?