Я пытаюсь заменить фрагмент в приложении для Android, но мой фрагмент не меняется (Kotlin)

#android #kotlin #android-fragments

#Android #kotlin #android-фрагменты

Вопрос:

В настоящее время я пытаюсь заставить свое приложение открывать фрагмент (с переходами) при нажатии плавающей кнопки действия. Однако, пока выполняются операторы печати в моей функции, фрагмент, отображаемый моим приложением, никогда не меняется. Кто-нибудь знает, что может быть причиной этого?

Это мой код:

 fun replaceFragment(fragment: Fragment, istransition:Boolean) {
        val fragmentTransition = requireActivity().supportFragmentManager.beginTransaction()

        Log.d("replaceFragment", "The replaceFragment does run")

        if (istransition) {
            fragmentTransition.setCustomAnimations(android.R.anim.slide_out_right, android.R.anim.slide_in_left)
        }
        fragmentTransition.replace(R.id.frame_layout, fragment).addToBackStack(fragment.javaClass.simpleName)
    }
 
 companion object {
        @JvmStatic
        fun newInstance() =
                HomeFragment().apply {
                    arguments = Bundle().apply {
                    }
                }
    }
 

И я вызываю эту функцию здесь, в моем onViewCreated:

         super.onViewCreated(view, savedInstanceState)
        newEntryButton.setOnClickListener {
            replaceFragment(CreateJournalEntryFragment.newInstance(), true)
            Log.v("Red", "New journal entry test")
        }
    }
 

Любая помощь будет принята с благодарностью!

Ответ №1:

Вам не хватает вызова commit() на вашем FragmentTransaction . Добавьте один после addToBackStack() :

 fragmentTransition
    .replace(R.id.frame_layout, fragment)
    .addToBackStack(fragment.javaClass.simpleName)
    .commit()