오늘은 그나마 최근(?)에 Deprecated된 BottomNavigationView.setOnNavigationItemSelectedListener
에 대해 포스팅 하려고 한다.
우선 이 글의 작성일인 2021년 08월 11일을 기준으로,
안드로이드 공식 문서에 setOnNavigationItemSelectedListener
가 deprecated 되었다는 표시는 존재하지 않았다.
하지만 Github에 공개되어 있는 소스코드를 보면
확실히 deprecated 되었다는 것을 확인할 수 있었지만, deprecated 된 이유는 알 수 없었다.
그래서 commit을 확인해 봤는데
The listeners were deprecated in favor of
NavigationBarView#OnItemSelectedListener
andNavigationBarView#OnItemReselectedListener
, but deprecation documentation was never added, so it's unclear what developers should use instead.
라는 내용이 적혀있었다.
여기서 나는 "it's unclear what developers should use instead." 라는 부분을 보자마자 엥? 이게뭐야?? 싶었다.
대체해서 사용할 함수가 확실하지 않다니..
그래서 바로 stackoverflow에 검색을 했고, setOnNavigationItemSelectedListener
대신에 사용할 함수를 발견했다.
아래의 내용은 stackoverflow를 참고해서 작성한 내용입니다.
해결 방법은 간단하다.
BottomNavagationView
의 부모 클래스인 NavagationBarView
의 setOnItemSelectedListener
를 사용하면 된다.
기존에 작성되어 있던 코드를
bottomNavBar.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
// add your code
}
}
다음과 같이 수정하면 된다.
bottomNavBar.setOnItemSelectedListener { item ->
when(item.itemId) {
// add your code
}
}
이 경우에도 마찬가지로 BottomNavagationView
의 부모 클래스인 NavagationBarView
의 setOnItemReselectedListener
를 사용하면 된다.
기존에 작성되어 있던 코드를
bottomNavBar.setOnNavigationItemReselectedListener { item ->
when(item.itemId) {
// add your code
}
}
다음과 같이 수정하면 된다.
bottomNavBar.setOnItemReselectedListener { item ->
when(item.itemId) {
// add your code
}
}
와.. 1시간넘게 deprecated 찾고있었는데 덕분에 해결했어요 정말 감사합니다.