#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()