gpt4 book ai didi

android - Android导航组件-设置HasOptionsMenu使NavigateUp按钮无效

转载 作者:行者123 更新时间:2023-12-02 13:16:21 26 4
gpt4 key购买 nike

我正在将Android导航组件与bottomNavigationView一起使用。我已经在MainActivity中配置了AppBar,以便当应用不在图形的起始位置时出现“向上导航”按钮。
我已经设置了SupportedActionBar并覆盖了onSupportNavigateUp,如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setSupportActionBar(binding.mainToolbar)

...

val controller = binding.bottomNavView.setupWithNavController(
navGraphIds = navGraphIds,
fragmentManager = supportFragmentManager,
containerId = R.id.nav_host_container,
intent = intent
)

controller.observe(this, Observer { navController ->
appBarConfiguration = AppBarConfiguration(
topLevelDestinationIds = setOf(
navController.graph.startDestination,
R.id.navigation_level_up_onboarding
)
)

setupActionBarWithNavController(navController, appBarConfiguration)
})
currentController = controller
}

override fun onSupportNavigateUp(): Boolean {
return currentController?.value?.navigateUp() ?: false
}
在导航图中,我有一个目标 ProfileSettingsFragment,它需要具有菜单选项。我将它们设置为:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setHasOptionsMenu(true)

....
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.profile_settings_menu, menu)
super.onCreateOptionsMenu(menu, inflater)
}
菜单选项运行良好,但是,一旦我调用 setHasOptionsMenu(true),navigationUp按钮就不再对此片段起作用。
我究竟做错了什么?使用导航组件时,在保持片段的行为的同时在片段上添加菜单选项的正确方法是什么?

最佳答案

由于您使用的是Toolbar而不是

setupActionBarWithNavController(navController, appBarConfiguration)
您可以使用
toolbar.setupWithNavController(navController, appBarConfiguration)
并且您不需要重写 onSupportNavigateUp()方法。

关于android - Android导航组件-设置HasOptionsMenu使NavigateUp按钮无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63827514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com