На Stackoverflow есть сотни вопросов по этому поводу, но ни один из них не касается моей конкретной проблемы.
Я начинаю свою активность с этого кода как статическую функцию в моем классе активности:
fun startForResult(activity: Activity, code: Int) {
val intent = Intent(activity, MyActivity::class.java)
activity.startActivityForResult(intent, code)
activity.overridePendingTransition(R.anim.none, R.anim.none)
}
Когда MyActivity запускается, запускается onCreate и setContentView(R.layout.activity)
внутри него. Кажется, это идет в Back Stack. У Activity есть только FrameLayout, который является полноэкранным и является заполнителем/рамкой для фрагментов, которые я хочу загрузить. Моя активность очень проста, как мастер с 3 фрагментами/экранами, все в полноэкранном режиме. Как только моя активность OnCreate завершается, мой докладчик загружает первый фрагмент, FragmentA, используя такой код:
supportFragmentManager
.beginTransaction()
.replace(R.id.myContentFrame, FragmentA.newInstance())
.addToBackStack(null)
.commit()
Это также идет в задний стек. Пользователь нажимает следующую кнопку, и мой докладчик запускает этот код:
supportFragmentManager
.beginTransaction()
.replace(R.id.myContentFrame, FragmentB.newInstance())
.addToBackStack(null)
.commit()
Когда пользователь нажимает кнопку «Назад» на FragmentB, пользователь возвращается к FragmentA, и это нормально. Моя проблема возникает, когда они нажимают кнопку «Назад» на FragmentA, она переводит их на чистый экран, который, по-видимому, является этим событием setContentView(R.layout.activity)
, оно было добавлено в задний стек, и я возвращаюсь к нему. Поэтому я хотел бы, чтобы это событие, начало действия и его невидимый макет НЕ добавлялись в задний стек. Когда пользователь находится на FragmentA и нажимает кнопку «Назад», я бы хотел, чтобы действие просто завершилось. Я пробовал кучу разных вещей, чтобы избавиться от этой транзакции setContentView(R.layout.activity)
в моем заднем стеке, и ничего не сработало. Я предполагаю, что для этого есть простое решение, например, установка ФЛАГА, но оно ускользнуло от меня. В прошлом я переопределял метод OnBackPress и предполагаю, что это сработает, но мне все еще любопытно, есть ли более простой способ вытолкнуть этот первый элемент (Activity) из моего заднего стека, не требуя от меня переопределения OnBackPressed.
Что мне не хватает?