File: BaseDrawerActivity.kt
Module: core
Purpose: Common activity that provides the drawer UI, branding header include, and plumbing for hamburger toggle and navigation dispatch.
| Component | Type | ID | Purpose |
|---|---|---|---|
DrawerLayout |
View | R.id.drawer_layout |
Hosts right‑edge navigation drawer |
NavigationView |
View | R.id.nav_view |
Drawer menu (from navigation_menu.xml) |
Toolbar (optional) |
View | R.id.toolbar |
Title / actions |
hamburgerButton |
View (ImageButton) | R.id.hamburgerButton |
Opens/closes drawer |
DrawerToggleHelper |
Utility | – | Wires toggle state to drawer |
CoreNavigator |
Utility | – | Routes menu selections to destinations |
GravityCompat.END.DrawerToggleHelper.onNavigationItemSelected() to delegate routing to CoreNavigator.| Method / Property | Purpose |
|---|---|
onCreate() |
Sets content view, binds views, attaches listeners. |
toggleDrawer() |
Open/close drawer using GravityCompat.END. |
onNavigationItemSelected(item) |
Handles menu taps, delegates to CoreNavigator. |
onPostCreate() |
Syncs toggle state after restore. |
onConfigurationChanged(newConfig) |
Forwards to DrawerToggleHelper to keep indicator in sync. |
openDrawer() / closeDrawer() |
Explicit drawer control methods. |
| Test Case | Description |
|---|---|
testToggleDrawer() |
Repeated toggle alternates open/closed. |
testNavigationDelegation() |
Selecting item calls CoreNavigator.route(...). |
testDrawerClosesOnSelection() |
Drawer closes after a valid selection. |
| Scenario | Description |
|---|---|
| Hamburger accessibility | Has content description and responds to click. |
| Right-side behavior | Drawer opens from the right side. |