问题描述
我正在将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)
,NavigatorUp按钮就不再对此片段起作用。
我在做什么错?使用导航组件时,要在片段上添加菜单选项并保持NavigationUp行为的正确方法是什么?
解决方法
因为您使用的是print([sum(number ** 2 for number in list) for list in k])
而不是
Toolbar
您可以使用
setupActionBarWithNavController(navController,appBarConfiguration)
,您无需覆盖toolbar.setupWithNavController(navController,appBarConfiguration)
方法。