0

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?

james04
  • 798
  • 5
  • 20

0 Answers0