Skip to content

Commit 1672e8c

Browse files
add a navigationdrawer
1 parent 8df1571 commit 1672e8c

File tree

5 files changed

+63
-11
lines changed

5 files changed

+63
-11
lines changed

.idea/navEditor.xml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/example/android/navigation/MainActivity.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,31 @@ package com.example.android.navigation
1919
import android.os.Bundle
2020
import androidx.appcompat.app.AppCompatActivity
2121
import androidx.databinding.DataBindingUtil
22+
import androidx.drawerlayout.widget.DrawerLayout
2223
import androidx.navigation.findNavController
24+
import androidx.navigation.ui.AppBarConfiguration
2325
import androidx.navigation.ui.NavigationUI
2426
import com.example.android.navigation.databinding.ActivityMainBinding
2527

2628
class MainActivity : AppCompatActivity() {
27-
29+
private lateinit var drawerLayout : DrawerLayout
30+
private lateinit var appBarConfiguration: AppBarConfiguration
2831
override fun onCreate(savedInstanceState: Bundle?) {
2932
super.onCreate(savedInstanceState)
3033
@Suppress("UNUSED_VARIABLE")
34+
// create a binding object
3135
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
36+
drawerLayout = binding.drawerLayout
3237
// this is how we hook the navhostfragment to the mainActivity
3338
val navController = this.findNavController(R.id.mynavHostFragment)
34-
NavigationUI.setupActionBarWithNavController(this, navController)
39+
// tie the binding object into a view
40+
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
41+
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
42+
NavigationUI.setupWithNavController(binding.navView, navController)
3543
}
3644

3745
override fun onSupportNavigateUp(): Boolean {
3846
val navController = this.findNavController(R.id.mynavHostFragment)
39-
return navController.navigateUp()
47+
return NavigationUI.navigateUp(navController, drawerLayout)
4048
}
4149
}

app/src/main/res/layout/activity_main.xml

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,36 @@
1717
<layout xmlns:android="http://schemas.android.com/apk/res/android"
1818
xmlns:app="http://schemas.android.com/apk/res-auto">
1919

20+
<androidx.drawerlayout.widget.DrawerLayout
21+
android:id="@+id/drawerLayout"
22+
android:layout_width="match_parent"
23+
android:layout_height="match_parent">
24+
2025
<LinearLayout
2126
android:layout_width="match_parent"
2227
android:layout_height="match_parent"
2328
android:orientation="vertical">
24-
<fragment
25-
android:id="@+id/mynavHostFragment"
26-
android:name="androidx.navigation.fragment.NavHostFragment"
27-
android:layout_width="match_parent"
28-
android:layout_height="match_parent"
29-
app:defaultNavHost = "true"
30-
app:navGraph="@navigation/navigation">
3129

32-
</fragment>
30+
<fragment
31+
android:id="@+id/mynavHostFragment"
32+
android:name="androidx.navigation.fragment.NavHostFragment"
33+
android:layout_width="match_parent"
34+
android:layout_height="match_parent"
35+
app:defaultNavHost="true"
36+
app:navGraph="@navigation/navigation">
37+
38+
</fragment>
3339

3440
</LinearLayout>
3541

42+
<com.google.android.material.navigation.NavigationView
43+
android:id="@+id/navView"
44+
android:layout_width="match_parent"
45+
android:layout_height="match_parent"
46+
android:layout_gravity="start"
47+
app:menu="@menu/navdrawer_menu"
48+
app:headerLayout="@layout/nav_header" />
49+
50+
</androidx.drawerlayout.widget.DrawerLayout>
51+
3652
</layout>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item
4+
android:id="@+id/rulesFragment"
5+
android:icon="@drawable/rules"
6+
android:title="@string/rules" />
7+
<item
8+
android:id="@+id/aboutFragment"
9+
android:icon="@drawable/android"
10+
android:title="@string/about" />
11+
</menu>

app/src/main/res/navigation/navigation.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,9 @@
5959
android:name="com.example.android.navigation.AboutFragment"
6060
android:label="@string/title_about_trivia"
6161
tools:layout="@layout/fragment_about" />
62+
<fragment
63+
android:id="@+id/rulesFragment"
64+
android:name="com.example.android.navigation.RulesFragment"
65+
android:label="fragment_rules"
66+
tools:layout="@layout/fragment_rules" />
6267
</navigation>

0 commit comments

Comments
 (0)