将图标重置为bottomavigationview中未选中项目的原始图标

时间:2018-07-30 05:52:54

标签: android kotlin indexoutofboundsexception bottomnavigationview menu-items

我已经使用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()是设置默认片段。

感谢您的帮助。

0 个答案:

没有答案