Bird
Raised Fist0
Android Kotlinmobile~20 mins

Navigation drawer in Android Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Navigation Drawer Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
1:30remaining
What happens when the navigation drawer is opened?
In an Android app using a navigation drawer, what is the typical behavior when the drawer is opened?
AThe drawer appears over the main content without moving it.
BThe main content slides to the right and the drawer appears from the left.
CThe main content fades out and the drawer replaces it completely.
DThe drawer slides from the bottom covering the main content.
Attempts:
2 left
💡 Hint
Think about how the main screen moves when the drawer opens.
❓ lifecycle
intermediate
1:30remaining
When should you close the navigation drawer?
In an Android app with a navigation drawer, when is the best time to close the drawer programmatically?
AWhen the app is paused or stopped.
BOnly when the user presses the back button.
CImmediately after the user selects a menu item from the drawer.
DNever close it programmatically; let the user close it manually.
Attempts:
2 left
💡 Hint
Think about user experience after selecting an option.
❓ navigation
advanced
2:00remaining
Which code snippet correctly sets up a navigation drawer toggle?
Given an Activity with a DrawerLayout and a Toolbar, which Kotlin code correctly sets up the ActionBarDrawerToggle to sync the drawer icon?
Android Kotlin
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val toolbar: Toolbar = findViewById(R.id.toolbar)
A
val toggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close)
drawerLayout.addDrawerListener(toggle)
toggle.syncState()
B
val toggle = ActionBarDrawerToggle(this, drawerLayout, toolbar)
drawerLayout.addDrawerListener(toggle)
toggle.syncState()
C
val toggle = ActionBarDrawerToggle(drawerLayout, this, toolbar, R.string.open, R.string.close)
drawerLayout.setDrawerListener(toggle)
toggle.syncState()
D
val toggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close)
drawerLayout.addDrawerListener(toggle)
toggle.sync()
Attempts:
2 left
💡 Hint
Check the constructor parameters and method names carefully.
📝 Syntax
advanced
1:30remaining
What error does this code produce?
Consider this Kotlin code snippet inside an Activity: val drawerLayout = findViewById(R.id.drawer_layout) val toggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close) drawerLayout.addDrawerListener(toggle) // Missing toggle.syncState() call What is the likely result when running the app?
AThe drawer works perfectly with no issues.
BThe app crashes with a NullPointerException.
CThe drawer opens but the icon animates incorrectly.
DThe drawer icon does not appear or respond to clicks.
Attempts:
2 left
💡 Hint
Think about what syncState() does for the toggle.
🔧 Debug
expert
2:00remaining
Why does the navigation drawer not close on back press?
An Android app uses a navigation drawer. The developer overrides onBackPressed() as follows: override fun onBackPressed() { super.onBackPressed() if (drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawer(GravityCompat.START) } } What is the problem with this code?
ACalling super.onBackPressed() first closes the activity before the drawer can close.
BThe drawerLayout.isDrawerOpen() method is used incorrectly and always returns false.
CThe drawerLayout.closeDrawer() method requires a delay to work properly.
DThe GravityCompat.START constant is not the correct gravity for the drawer.
Attempts:
2 left
💡 Hint
Consider the order of operations in onBackPressed().

Practice

(1/5)
1. What is the main purpose of a Navigation Drawer in an Android app?
easy
A. To display pop-up messages to the user
B. To let users switch between different sections of the app easily
C. To show a list of notifications
D. To play background music in the app

Solution

  1. Step 1: Understand the role of Navigation Drawer

    A Navigation Drawer is a UI panel that slides from the side to show app sections.
  2. Step 2: Match purpose with options

    Only To let users switch between different sections of the app easily describes switching app sections, which is the main use of Navigation Drawer.
  3. Final Answer:

    To let users switch between different sections of the app easily -> Option B
  4. Quick Check:

    Navigation Drawer = Switch app sections [OK]
Hint: Navigation drawer is for app section switching [OK]
Common Mistakes:
  • Confusing drawer with notifications panel
  • Thinking it shows pop-up messages
  • Assuming it controls media playback
2. Which Kotlin code snippet correctly initializes a DrawerLayout and ActionBarDrawerToggle in an Activity?
easy
A. val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState()
B. val drawerToggle = ActionBarDrawerToggle(drawerLayout, this, toolbar, R.string.open, R.string.close) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState()
C. val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState()
D. val drawerToggle = ActionBarDrawerToggle(this, toolbar, drawerLayout, R.string.open, R.string.close) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState()

Solution

  1. Step 1: Check ActionBarDrawerToggle constructor parameters

    The correct order is (Activity, DrawerLayout, Toolbar, openDescRes, closeDescRes).
  2. Step 2: Verify code matches this order

    val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState() matches the correct parameter order and calls addDrawerListener and syncState properly.
  3. Final Answer:

    val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState() -> Option C
  4. Quick Check:

    Correct constructor order = val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close) drawerLayout.addDrawerListener(drawerToggle) drawerToggle.syncState() [OK]
Hint: Remember constructor order: Activity, DrawerLayout, Toolbar, open, close [OK]
Common Mistakes:
  • Swapping DrawerLayout and Toolbar parameters
  • Missing open/close string resource IDs
  • Not calling addDrawerListener or syncState
3. Given this Kotlin code snippet inside an Activity, what happens when the user taps the hamburger icon?
val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close)
drawerLayout.addDrawerListener(drawerToggle)
drawerToggle.syncState()
medium
A. The toolbar title changes to 'open'
B. The app crashes due to missing listener
C. Nothing happens because syncState is missing
D. The navigation drawer slides in from the side

Solution

  1. Step 1: Understand ActionBarDrawerToggle behavior

    It links the hamburger icon to open/close the drawer when tapped.
  2. Step 2: Check code completeness

    Code adds drawerToggle as listener and calls syncState, so toggle works correctly.
  3. Final Answer:

    The navigation drawer slides in from the side -> Option D
  4. Quick Check:

    Hamburger tap = Drawer slides in [OK]
Hint: Hamburger icon toggles drawer visibility [OK]
Common Mistakes:
  • Thinking syncState is optional
  • Assuming no effect without extra code
  • Confusing drawer toggle with toolbar title change
4. What is the error in this Kotlin code for setting up a navigation drawer?
val drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close)
drawerToggle.syncState()
medium
A. Missing call to drawerLayout.addDrawerListener(drawerToggle)
B. Wrong order of parameters in ActionBarDrawerToggle
C. Missing call to setSupportActionBar(toolbar)
D. Missing string resources for open and close

Solution

  1. Step 1: Review drawer toggle setup steps

    After creating drawerToggle, you must add it as a listener to drawerLayout.
  2. Step 2: Identify missing method call

    The code calls syncState but does not call drawerLayout.addDrawerListener(drawerToggle), so toggle won't work.
  3. Final Answer:

    Missing call to drawerLayout.addDrawerListener(drawerToggle) -> Option A
  4. Quick Check:

    Must add drawerToggle as listener [OK]
Hint: Always add drawerToggle as drawer listener [OK]
Common Mistakes:
  • Forgetting addDrawerListener call
  • Mixing parameter order in constructor
  • Skipping setSupportActionBar(toolbar) setup
5. You want to add a navigation drawer with three menu items: Home, Profile, and Settings. Which approach correctly sets up the drawer menu and handles item clicks in Kotlin?
hard
A. Define menu in XML, set NavigationView's menu, then use setNavigationItemSelectedListener to handle clicks
B. Create menu items programmatically in Activity, then override onOptionsItemSelected for clicks
C. Use a RecyclerView inside DrawerLayout for menu, handle clicks with adapter listener
D. Add buttons inside DrawerLayout layout XML and set onClickListeners in Activity

Solution

  1. Step 1: Understand standard navigation drawer menu setup

    Menus are usually defined in XML and linked to NavigationView for easy management.
  2. Step 2: Handle item clicks with setNavigationItemSelectedListener

    This listener handles user taps on menu items properly.
  3. Final Answer:

    Define menu in XML, set NavigationView's menu, then use setNavigationItemSelectedListener to handle clicks -> Option A
  4. Quick Check:

    XML menu + listener = Define menu in XML, set NavigationView's menu, then use setNavigationItemSelectedListener to handle clicks [OK]
Hint: Use XML menu and NavigationView listener for drawer items [OK]
Common Mistakes:
  • Trying to handle drawer menu with onOptionsItemSelected
  • Using RecyclerView unnecessarily for simple menus
  • Placing buttons directly inside DrawerLayout instead of NavigationView
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard