Предыдущий фрагмент показывает пустой экран при нажатии кнопки назад (с использованием нескольких фрагментов транзакций)

У меня есть действие, которое показывает два фрагмента одновременно на планшете и по одному на телефоне. Поскольку я делаю приложение для планшетов и Android, я должен разделить функциональность навигации между фрагментами в отдельную функцию "displaySecondFragmentOnHandset ()".

На меньшей трубке при переходе от первого фрагмента ко второму, а затем при попытке вернуться к первому экран пуст.

MyActivity:

    class CentralActivity : AppCompatActivity() {

    val manager = supportFragmentManager
    var firstFrag : FirstFrag? = null

    override fun onCreate(savedInstanceState: Bundle?) {

        ...

            var ft: FragmentTransaction = manager.beginTransaction();

            firstFrag = FirstFrag.newInstance()
            ft.add(R.id.real_container, firstFrag!!, "firstFrag")

            if (screenLayoutSize >= Configuration.SCREENLAYOUT_SIZE_LARGE) {
                var secondFrag = SecondFrag.newInstance()
                ft.add(R.id.real_container, secondFrag, "secondFrag")
            }
            ft.commit()
    }

    fun displaySecondFragmentOnHandset (){
        var secondFrag = SecondFrag.newInstance()
        var ft: FragmentTransaction = manager.beginTransaction();
        ft!!.replace(R.id.real_container, secondFrag).addToBackStack("secondFrag").commit()
    }

Тогда в моем FirstFragemnt, если я на меньшем телефоне, я делаю:

    class FirstFragemnt : Fragment() {
          private var viewModel: SharedViewModel? = null

          fun goToSecondFragment(){
          if (screenLayoutSize!! < Configuration.SCREENLAYOUT_SIZE_LARGE) {

            viewModel!!.setMsgInCommunicator(collection)
            var centralActivity: CentralActivity = activity as CentralActivity
            centralActivity.displaySecondFragmentOnHandset()
     }
    }

Проблема в том, что когда я нажимаю кнопку «Назад», чтобы перейти к первому фрагменту, на экране ничего нет.

Всего 1 ответ


в CentralActivity заменить

ft !!. replace (R.id.real_container, secondFrag) .addToBackStack ("secondFrag"). commit ()

с

ft !!. add (R.id.real_container, secondFrag) .addToBackStack ("secondFrag"). commit ()


Есть идеи?

10000