본문 바로가기

안드로이드 스튜디오

[안드로이드 스튜디오 코틀린] Kotlin setOnNavigationItemSelectedListener deprecated 해결 방법

728x90
반응형

 

 

 

 

 

 

Bottom Navigation을 연결하는 중 setOnNavigationItemSelectedListener deprecated라고 나와 대응 방법을 기록한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

연결하려고 보면 NavigationItem~~~ 관련 함수들이 다 deprecated 되었다.

아래와 같이 나온다.

 

 

 

 

 

위의 setOnNavigationItemSelectedListener를 사용하면 onNavigationItemSelected를 override 할 수 있지만 

방법이 바뀌어서 이제 오버라이드를 하지 않고 사용해도 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

검색해 봐도 왜 없어진 건지 찾을 수 없었다... 음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

해결 방법은 setOnItemSelectedListener 를 사용해서 대체해준다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Before

 

private fun initNav() = with(binding) {
    bottomNav.setOnNavigationItemSelectedListener(this@MainActivity)
}

override fun onNavigationItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        R.id.menu_home -> {
            showFragment(HomeFragment.newInstance(), HomeFragment.TAG)
            true
        }
        R.id.menu_my -> {
            showFragment(MyFragment.newInstance(), MyFragment.TAG)
            true
        }
        else -> false
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

After

- setOnItemSelectedListener를 사용 

 

private fun initNav() = with(binding) {
    bottomNav.setOnItemSelectedListener { item ->
        when (item.itemId) {
            R.id.menu_home -> {
                showFragment(HomeFragment.newInstance(), HomeFragment.TAG)
                true
            }
            R.id.menu_my -> {
                showFragment(MyFragment.newInstance(), MyFragment.TAG)
                true
            }
            else -> false
        }
    }
}

 

더 간결해진 것 같다.

728x90
반응형