停止刷新底部导航栏片段

时间:2018-01-03 03:02:34

标签: android

我有一个包含5个项目的底部导航栏。我希望最后一个按钮显示“更多”菜单。 (因此它应该作为按钮而不是进入选定状态)。

为此,我将保留导航栏中的最后一个选定项目ID,并在单击菜单项时将导航项目设置为最后选择的项目,如下所示。

modprobe configs

我的问题是当再次设置导航项时,如何停止刷新最后选择的视图(因为它已经可见)。由于菜单是BottomSheet,因此视图刷新显示为闪烁。或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

确定。我发现这种行为是因为我总是在不检查当前所选片段的情况下设置片段。当我添加一个检查它是否正常工作。

 private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
    if (item.itemId == lastSelectedItemId) { // added this
        return@OnNavigationItemSelectedListener true
    }
    when (item.itemId) {
        R.id.navigation_home -> {

            val fragment = TestFragment()
            supportFragmentManager.beginTransaction()
                    .replace(frame.id, fragment)
                    .commit()
            lastSelectedItemId = item.itemId
            return@OnNavigationItemSelectedListener true
        }