Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 968ab8b

Browse files
add BaseDynamicNavHostFragment with MainFragmentBottomNav to implement dynamic features
1 parent d11adb2 commit 968ab8b

File tree

48 files changed

+830
-90
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+830
-90
lines changed

‎app/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ android {
9797
dynamicFeatures = mutableSetOf(
9898
Modules.DynamicFeature.POST_DETAIL,
9999
Modules.DynamicFeature.SEARCH,
100-
Modules.DynamicFeature.DASHBOARD
100+
Modules.DynamicFeature.DASHBOARD,
101+
Modules.DynamicFeature.NOTIFICATION,
102+
Modules.DynamicFeature.ACCOUNT
101103
)
102104

103105
testOptions {

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/account/DashboardFragment.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/account/HomeFragment.kt renamed to ‎app/src/main/java/com/smarttoolfactory/postdynamichilt/home/HomeFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.smarttoolfactory.postdynamichilt.account
1+
package com.smarttoolfactory.postdynamichilt.home
22

33
import com.smarttoolfactory.core.ui.fragment.DynamicNavigationFragment
44
import com.smarttoolfactory.postdynamichilt.R

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/main/MainFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class MainFragment : BaseDataBindingFragment<FragmentMainBinding>() {
3939
return@setOnNavigationItemSelectedListener true
4040
}
4141

42-
R.id.nav_graph_dashboard -> {
42+
R.id.nav_graph_dashboard_start -> {
4343
viewPager2.setCurrentItem(1, false)
4444
return@setOnNavigationItemSelectedListener true
4545
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.smarttoolfactory.postdynamichilt.main
2+
3+
import android.os.Bundle
4+
import android.view.View
5+
import com.smarttoolfactory.core.ui.fragment.BaseDataBindingFragment
6+
import com.smarttoolfactory.core.util.setupWithNavController
7+
import com.smarttoolfactory.postdynamichilt.R
8+
import com.smarttoolfactory.postdynamichilt.databinding.FragmentMainBottomNavBinding
9+
10+
class MainFragmentBottomNav : BaseDataBindingFragment<FragmentMainBottomNavBinding>() {
11+
override fun getLayoutRes(): Int = R.layout.fragment_main_bottom_nav
12+
13+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
14+
super.onViewCreated(view, savedInstanceState)
15+
16+
if (savedInstanceState == null) {
17+
setupBottomNavigationBar()
18+
} // Else, need to wait for onRestoreInstanceState
19+
}
20+
21+
override fun onViewStateRestored(savedInstanceState: Bundle?) {
22+
super.onViewStateRestored(savedInstanceState)
23+
// Now that BottomNavigationBar has restored its instance state
24+
// and its selectedItemId, we can proceed with setting up the
25+
// BottomNavigationBar with Navigation
26+
setupBottomNavigationBar()
27+
}
28+
29+
/**
30+
* Called on first creation and when restoring state.
31+
*/
32+
private fun setupBottomNavigationBar() {
33+
34+
val bottomNavigationView = dataBinding!!.bottomNav
35+
36+
val navGraphIds = listOf(
37+
R.navigation.nav_graph_home,
38+
R.navigation.nav_graph_dashboard_start,
39+
R.navigation.nav_graph_notification_start,
40+
R.navigation.nav_graph_account_start
41+
)
42+
43+
// Setup the bottom navigation view with a list of navigation graphs
44+
val controller = bottomNavigationView.setupWithNavController(
45+
navGraphIds = navGraphIds,
46+
fragmentManager = childFragmentManager,
47+
containerId = R.id.nav_host_container,
48+
intent = requireActivity().intent
49+
)
50+
}
51+
52+
override fun bindViews() {
53+
println("")
54+
}
55+
}

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/ui/BottomNavigationStateAdapter.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
1010
import androidx.viewpager2.adapter.FragmentStateAdapter.FragmentTransactionCallback.OnPostEventListener
1111
import com.google.android.material.bottomnavigation.BottomNavigationView
1212
import com.smarttoolfactory.core.ui.fragment.navhost.BaseDynamicNavHostFragment
13+
import com.smarttoolfactory.core.ui.fragment.navhost.BaseNavHostFragment
1314
import com.smarttoolfactory.postdynamichilt.R
1415

1516
/**
@@ -82,23 +83,23 @@ class BottomNavigationStateAdapter(fragmentManager: FragmentManager, lifecycle:
8283

8384
// Home nav graph
8485
0 ->
85-
BaseDynamicNavHostFragment
86-
.createDynamicNavHostFragment(R.navigation.nav_graph_home)
86+
BaseNavHostFragment
87+
.createNavHostFragment(R.navigation.nav_graph_home)
8788

8889
// Dashboard nav graph
8990
1 ->
9091
BaseDynamicNavHostFragment
91-
.createDynamicNavHostFragment(R.navigation.nav_graph_dashboard)
92+
.createDynamicNavHostFragment(R.navigation.nav_graph_dashboard_start)
9293

9394
// Notification nav graph
9495
2 ->
95-
BaseDynamicNavHostFragment
96-
.createDynamicNavHostFragment(R.navigation.nav_graph_notification)
96+
BaseNavHostFragment
97+
.createNavHostFragment(R.navigation.nav_graph_notification_start)
9798

9899
// Account nav graph
99100
else ->
100-
BaseDynamicNavHostFragment
101-
.createDynamicNavHostFragment(R.navigation.nav_graph_account)
101+
BaseNavHostFragment
102+
.createNavHostFragment(R.navigation.nav_graph_account_start)
102103
}
103104
}
104105
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
app:layout_constraintBottom_toBottomOf="parent"
1919

2020
app:defaultNavHost="true"
21-
app:navGraph="@navigation/nav_graph_main"/>
21+
app:navGraph="@navigation/nav_graph_main_bottom_nav"/>
2222

2323
</androidx.constraintlayout.widget.ConstraintLayout>
2424
</layout>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
5+
<androidx.constraintlayout.widget.ConstraintLayout
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent">
8+
9+
<androidx.fragment.app.FragmentContainerView
10+
android:id="@+id/nav_host_container"
11+
android:layout_width="0dp"
12+
android:layout_height="0dp"
13+
app:layout_constraintBottom_toTopOf="@+id/bottom_nav"
14+
app:layout_constraintLeft_toLeftOf="parent"
15+
app:layout_constraintRight_toRightOf="parent"
16+
app:layout_constraintTop_toTopOf="parent" />
17+
18+
<com.google.android.material.bottomnavigation.BottomNavigationView
19+
android:id="@+id/bottom_nav"
20+
android:layout_width="match_parent"
21+
android:layout_height="wrap_content"
22+
app:layout_constraintBottom_toBottomOf="parent"
23+
app:menu="@menu/menu_bottom_nav" />
24+
25+
</androidx.constraintlayout.widget.ConstraintLayout>
26+
27+
</layout>
28+

‎app/src/main/res/layout/fragment_navhost_account.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
app:layout_constraintLeft_toLeftOf="parent"
1717
app:layout_constraintRight_toRightOf="parent"
1818
app:layout_constraintTop_toTopOf="parent"
19-
app:navGraph="@navigation/nav_graph_account" />
19+
app:navGraph="@navigation/nav_graph_account_start" />
2020

2121
</androidx.constraintlayout.widget.ConstraintLayout>
2222

‎app/src/main/res/layout/fragment_navhost_notification.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
app:layout_constraintLeft_toLeftOf="parent"
1717
app:layout_constraintRight_toRightOf="parent"
1818
app:layout_constraintTop_toTopOf="parent"
19-
app:navGraph="@navigation/nav_graph_notification" />
19+
app:navGraph="@navigation/nav_graph_notification_start" />
2020

2121
</androidx.constraintlayout.widget.ConstraintLayout>
2222

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /