使用Android导航组件时如何根据不同片段设置不同的工具栏导航图标?

时间:2020-05-04 06:05:34

标签: android android-fragments android-navigation android-navigationview android-navigation-graph

我使用下面的代码实现了这一点,但是当我单击底部导航的搜索帐户图标时,其首先显示默认导航图标,然后将其删除。 如何在导航中避免这种情况。 enter image description here

enter image description here

enter image description here

主要活动代码

class MainActivity : AppCompatActivity(), TempToolbarTitleListener {

private lateinit var navController : NavController

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)
    setupNav()
}

private fun setupNav() {
    navController = Navigation.findNavController(this, R.id.fragment_nav)
    setupActionBarWithNavController(this, navController)
    NavigationUI.setupWithNavController(bottomNavigationView, navController)
}

override fun onSupportNavigateUp(): Boolean { return navController.navigateUp() }

override fun updateTitle(title: String, icon: Int) {
    val drawable: Drawable
    toolbar.title = title

    when {
        icon != 0 -> {
            drawable = resources.getDrawable(icon)
            toolbar.navigationIcon = drawable
        }
        else ->  toolbar.navigationIcon = null
    }
}

}

我正在使用界面获取信息以更新工具栏详细信息

界面

interface TempToolbarTitleListener {
fun updateTitle(title: String, icon : Int)

}

搜索片段 我不想要导航图标的地方我传递0,如果我传递可绘制的文件

 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?): View? {
    (activity as TempToolbarTitleListener).updateTitle("Search Here",0)
    return inflater.inflate(R.layout.fragment_search, container, false)
}

0 个答案:

没有答案