我已经使用bottomnavigationview实现了导航视图。如果选择了该项目,我正在更改图标,但是在选择另一个项目时,我已将图标重置为上一个图标。我在底部导航视图中重置未选择项目的图标时遇到问题。我尝试使用其他答案中给出的menuItem,但这会抛出IndexOutOfBoundsException
。因此,我正在寻找一种进行此重置的方法。
顺便说一句,我正在使用Kotlin在android studio中进行上述操作。代码段如下所示。
bottomNavigationView.selectedItemId = R.id.nav_progress
setProgressFragment()
bottomNavigationView.setOnNavigationItemSelectedListener { item ->
if (menuItem.getItem(item.itemId).equals(R.id.nav_progress)) {
menuItem.getItem(R.id.nav_concept).setIcon(R.drawable.concept_dark)
menuItem.getItem(R.id.nav_discover).setIcon(R.drawable.explore_dark)
}
if (menuItem.getItem(item.itemId).equals(R.id.nav_discover)) {
menuItem.getItem(R.id.nav_concept).setIcon(R.drawable.concept_dark)
menuItem.getItem(R.id.nav_progress).setIcon(R.drawable.progree_dark)
}
if (menuItem.getItem(item.itemId).equals(R.id.nav_concept)) {
menuItem.getItem(R.id.nav_progress).setIcon(R.drawable.progree_dark)
menuItem.getItem(R.id.nav_discover).setIcon(R.drawable.explore_dark)
}
when(item.itemId){
R.id.nav_progress->{
if (!isFragmentProgressFragment) {
item.setIcon(R.drawable.progree)
setProgressFragment()
}
}
R.id.nav_discover-> {
navigation_header_container?.setImageResource(R.drawable.header_pink)
if (!isFragmentDiscoverFragment) {
item.setIcon(R.drawable.explore)
setDiscoverFragment()
}
}
R.id.nav_concept-> {
navigation_header_container?.setImageResource(R.drawable.header_pink)
if (isFragmentDiscoverFragment || isFragmentProgressFragment) {
item.setIcon(R.drawable.concept)
setConceptFragment()
}
}
}
true
}
仅作说明:最上面的setProgressFragment()
是设置默认片段。
感谢您的帮助。