替换后,我无法将抽屉导航菜单附加到 android 中的汉堡菜单 - 使用 kotlin
I cannot attach drawer navigation menu to hamburger menu in android after replacing it - using kotlin
我是 Kotlin 的新手,对 android 相对缺乏经验,我解决了很多我正在做的事情的问题,但现在我真的卡住了。
所以 - 当我启动应用程序时,应用程序的抽屉菜单工作正常,将其滑出侧面和单击汉堡包图标时都会打开。
我有两个菜单,一个在应用程序启动时使用,另一个在成功登录后向用户显示不同的项目。
到目前为止我已经成功地替换了菜单,link它的项目到正确的片段,阻止汉堡包成为返回导航的箭头。
现在除了汉堡菜单没有打开抽屉外,一切正常。
有谁知道我重新分配新菜单的文件中缺少什么?
如果有意义的话,登录恰好使用改造,所以 withContext ( Dispatchers.Main ) 是将那部分代码带回UI 线程(或者至少这是我为使其与 UI 一起工作所做的)
suspend fun selectMenu ( activity : AppCompatActivity, screenElements : MenuUtilScreenElementsWrapper )
{
withContext ( Dispatchers.Main )
{
screenElements.navigationView.menu.clear()
val navController = activity.findNavController ( R.id.nav_host_fragment )
val drawerLayout: DrawerLayout = activity.findViewById ( R.id.drawer_layout )
val navView: NavigationView = activity.findViewById ( R.id.nav_view )
if ( screenElements.menuToUse == EnvironmentConstants.CHANGE_MENU_TO_PUBLIC )
{
var appBarConfiguration = AppBarConfiguration (
setOf
(
R.id.nav_login, R.id.nav_register, R.id.nav_about, R.id.nav_terms_and_conditions, R.id.nav_privacy
), drawerLayout
)
activity.setupActionBarWithNavController ( navController, appBarConfiguration )
navView.setupWithNavController ( navController )
screenElements.navigationView.inflateMenu ( R.menu.activity_public_drawer )
screenElements.navController.setGraph ( R.navigation.public_navigation )
}
else
{
var appBarConfiguration = AppBarConfiguration (
setOf
(
R.id.nav_decks, R.id.nav_flashcards, R.id.nav_search
), drawerLayout
)
activity.setupActionBarWithNavController ( navController, appBarConfiguration )
navView.setupWithNavController ( navController )
screenElements.navigationView.inflateMenu ( R.menu.activity_members_drawer )
screenElements.navController.setGraph ( R.navigation.members_navigation )
}
}
}
非常感谢您!
我放弃了替换菜单的尝试,我只是将两组菜单项分成两组并交替隐藏/显示它们(预登录与 post 登录“链接”到活动)
我是 Kotlin 的新手,对 android 相对缺乏经验,我解决了很多我正在做的事情的问题,但现在我真的卡住了。
所以 - 当我启动应用程序时,应用程序的抽屉菜单工作正常,将其滑出侧面和单击汉堡包图标时都会打开。
我有两个菜单,一个在应用程序启动时使用,另一个在成功登录后向用户显示不同的项目。
到目前为止我已经成功地替换了菜单,link它的项目到正确的片段,阻止汉堡包成为返回导航的箭头。
现在除了汉堡菜单没有打开抽屉外,一切正常。
有谁知道我重新分配新菜单的文件中缺少什么? 如果有意义的话,登录恰好使用改造,所以 withContext ( Dispatchers.Main ) 是将那部分代码带回UI 线程(或者至少这是我为使其与 UI 一起工作所做的)
suspend fun selectMenu ( activity : AppCompatActivity, screenElements : MenuUtilScreenElementsWrapper )
{
withContext ( Dispatchers.Main )
{
screenElements.navigationView.menu.clear()
val navController = activity.findNavController ( R.id.nav_host_fragment )
val drawerLayout: DrawerLayout = activity.findViewById ( R.id.drawer_layout )
val navView: NavigationView = activity.findViewById ( R.id.nav_view )
if ( screenElements.menuToUse == EnvironmentConstants.CHANGE_MENU_TO_PUBLIC )
{
var appBarConfiguration = AppBarConfiguration (
setOf
(
R.id.nav_login, R.id.nav_register, R.id.nav_about, R.id.nav_terms_and_conditions, R.id.nav_privacy
), drawerLayout
)
activity.setupActionBarWithNavController ( navController, appBarConfiguration )
navView.setupWithNavController ( navController )
screenElements.navigationView.inflateMenu ( R.menu.activity_public_drawer )
screenElements.navController.setGraph ( R.navigation.public_navigation )
}
else
{
var appBarConfiguration = AppBarConfiguration (
setOf
(
R.id.nav_decks, R.id.nav_flashcards, R.id.nav_search
), drawerLayout
)
activity.setupActionBarWithNavController ( navController, appBarConfiguration )
navView.setupWithNavController ( navController )
screenElements.navigationView.inflateMenu ( R.menu.activity_members_drawer )
screenElements.navController.setGraph ( R.navigation.members_navigation )
}
}
}
非常感谢您!
我放弃了替换菜单的尝试,我只是将两组菜单项分成两组并交替隐藏/显示它们(预登录与 post 登录“链接”到活动)