In my MainActivity i have a Contacts fragment, which has a ViewPager and a BottomNavigationView with FriendsFragment and PendingsFragment. By default, the FriendsFragment is shown when the ContactsFragment opens.
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_contacts, container, false)
ViewPagerAdapter(requireFragmentManager()).apply {
addFragment(FriendsFragment())
addFragment(PendingFragment())
}.also {
view.contactsViewPager.adapter = it
}
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
bottomNavigationView.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.friends -> contactsViewPager.currentItem = 0
R.id.pending -> contactsViewPager.currentItem = 1
}
false
}
contactsViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
if (prevMenuItem != null)
prevMenuItem!!.isChecked = false
else
bottomNavigationView.menu.getItem(0).isChecked = false
bottomNavigationView.menu.getItem(position).isChecked = true
prevMenuItem = bottomNavigationView.menu.getItem(position)
}
override fun onPageScrollStateChanged(state: Int) {}
})
}
Inside FriendsFragment i have a floatingButton and with onClick i navigate to SearchFragment
createNew.setOnClickListener {
findNavController().navigate(ContactsFragmentDirections.actionContactsFragmentToSearchConnection())
}
Then the new fragment shows up. However, when i press the back button to return back to ContactsFragment the ContactsFragment shows only the BottomNavigationView and nothing else.
Why is this happening?