Solution 해결 과정
이전에 xml 화면끼리 화면 전환을 할 때 인텐트를 이용하여 액티비티를 부르는 방식으로 화면 전환을 진행하였는데
이번에는 바텀 내비게이션 바를 이용하여 프래그먼트로 작성한 화면을 FragmentManager을 사용하여 전환하였다.
시연 영상

어려웠던 점 2가지
1. 내비게이션바 버튼에 클릭 이벤트를 주는 것
bottomNavigationView에 id를 이용해서 클릭 이벤트를 주려고 해도 실행되지 않아서 한참을 찾아 헤맸다.
구글링을 하다가 bottomNavigationView에 setOnNavigationItemSelectedListener() 함수를 사용하면 된다는 해결 방법을 찾았고 이를 적용하였다.
binding.bottomNavigationView.setOnNavigationItemSelectedListener {
when (it.itemId) {
R.id.home -> {
manager.beginTransaction().replace(R.id.fragmentView_main, homeFragment).commit()
}
R.id.profile -> {
manager.beginTransaction().replace(R.id.fragmentView_main, profileFragment).commit()
}
}
true
}
2. 프래그먼트에서 리사이클러 뷰를 띄우는 것
분명 이전 activity 화면과 동일하게 구성하였고 또 프래그먼트 코틀린 파일의 onCreateView 안에 액티비티.kt와 동일한 코틀린 코드를 사용하였는데 이상하게 화면에 리사이클러 뷰가 나타나지 않았다.
알고 보니 내가 binding을 사용했지만 return 할 때 binding.root가 아니라 프래그먼트 id (inflater.inflate(R.layout.fragment_home, container, false))를 지칭하여 호출해서 일어난 문제였다.
이는 return binding.root로 해결하였다.