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 cb56ebd

Browse files
move Home tab from app to it's own dynamic feature module
1 parent 6594162 commit cb56ebd

File tree

60 files changed

+1327
-266
lines changed

Some content is hidden

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

60 files changed

+1327
-266
lines changed

‎app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ android {
9595
jvmTarget = "1.8"
9696
}
9797
dynamicFeatures = mutableSetOf(
98+
Modules.DynamicFeature.HOME,
9899
Modules.DynamicFeature.POST_DETAIL,
99100
Modules.DynamicFeature.SEARCH,
100101
Modules.DynamicFeature.DASHBOARD,

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

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

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import androidx.navigation.fragment.findNavController
66
import com.smarttoolfactory.core.ui.fragment.DynamicNavigationFragment
77
import com.smarttoolfactory.postdynamichilt.R
88
import com.smarttoolfactory.postdynamichilt.databinding.FragmentMainBinding
9-
import com.smarttoolfactory.postdynamichilt.ui.DynamicBottomNavigationStateAdapter
9+
import com.smarttoolfactory.postdynamichilt.ui.BottomNavigationFragmentStateAdapter
1010

1111
class MainFragment : DynamicNavigationFragment<FragmentMainBinding>() {
1212

@@ -27,24 +27,24 @@ class MainFragment : DynamicNavigationFragment<FragmentMainBinding>() {
2727

2828
// Set viewpager adapter
2929
viewPager2.adapter =
30-
DynamicBottomNavigationStateAdapter(childFragmentManager, viewLifecycleOwner.lifecycle)
30+
BottomNavigationFragmentStateAdapter(childFragmentManager, viewLifecycleOwner.lifecycle)
3131

3232
// Listen bottom navigation tabs change
3333
bottomNavigationView.setOnNavigationItemSelectedListener {
3434

3535
when (it.itemId) {
3636

37-
R.id.nav_graph_home -> {
37+
R.id.nav_graph_dfm_home_start -> {
3838
viewPager2.setCurrentItem(0, false)
3939
return@setOnNavigationItemSelectedListener true
4040
}
4141

42-
R.id.nav_graph_dashboard_start -> {
42+
R.id.nav_graph_dfm_dashboard_start -> {
4343
viewPager2.setCurrentItem(1, false)
4444
return@setOnNavigationItemSelectedListener true
4545
}
4646

47-
R.id.nav_graph_notification -> {
47+
R.id.nav_graph_dfm_notification_start -> {
4848
viewPager2.setCurrentItem(2, false)
4949
return@setOnNavigationItemSelectedListener true
5050
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class MainFragmentBottomNav : DynamicNavigationFragment<FragmentMainBottomNavBin
4444
val bottomNavigationView = dataBinding!!.bottomNav
4545

4646
val navGraphIds = listOf(
47-
R.navigation.nav_graph_home,
48-
R.navigation.nav_graph_dashboard_start,
49-
R.navigation.nav_graph_notification_start,
50-
R.navigation.nav_graph_account_start
47+
R.navigation.nav_graph_dfm_home_start,
48+
R.navigation.nav_graph_dfm_dashboard_start,
49+
R.navigation.nav_graph_dfm_notification_start,
50+
R.navigation.nav_graph_dfm_account_start
5151
)
5252

5353
// Setup the bottom navigation view with a list of navigation graphs

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.smarttoolfactory.core.util.Event
1313
import com.smarttoolfactory.core.viewmodel.NavControllerViewModel
1414
import com.smarttoolfactory.postdynamichilt.R
1515
import com.smarttoolfactory.postdynamichilt.databinding.FragmentMainViewpager2Binding
16-
import com.smarttoolfactory.postdynamichilt.ui.ChildFragmentStateAdapter
16+
import com.smarttoolfactory.postdynamichilt.ui.BottomNavigationFragmentStateAdapter
1717

1818
class MainFragmentViewPager2 : DynamicNavigationFragment<FragmentMainViewpager2Binding>() {
1919

@@ -38,7 +38,7 @@ class MainFragmentViewPager2 : DynamicNavigationFragment<FragmentMainViewpager2B
3838
https://stackoverflow.com/questions/61779776/leak-canary-detects-memory-leaks-for-tablayout-with-viewpager2
3939
*/
4040
viewPager.adapter =
41-
ChildFragmentStateAdapter(childFragmentManager, viewLifecycleOwner.lifecycle)
41+
BottomNavigationFragmentStateAdapter(childFragmentManager, viewLifecycleOwner.lifecycle)
4242

4343
// Bind tabs and viewpager
4444
TabLayoutMediator(tabLayout, viewPager, tabConfigurationStrategy).attach()

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/postlist/PostListFragment.kt

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

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/postlist/PostListViewModelRxJava3.kt

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

‎app/src/main/java/com/smarttoolfactory/postdynamichilt/ui/ChildFragmentStateAdapter.kt renamed to ‎app/src/main/java/com/smarttoolfactory/postdynamichilt/ui/BottomNavigationFragmentStateAdapter.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import androidx.lifecycle.Lifecycle
66
import com.smarttoolfactory.core.ui.adapter.NavigableFragmentStateAdapter
77
import com.smarttoolfactory.core.ui.fragment.navhost.NavHostContainerFragment
88
import com.smarttoolfactory.postdynamichilt.R
9-
import com.smarttoolfactory.postdynamichilt.home.HomeFragment
109

1110
/**
1211
* FragmentStateAdapter to contain ViewPager2 fragments inside another fragment.
@@ -16,15 +15,18 @@ import com.smarttoolfactory.postdynamichilt.home.HomeFragment
1615
*
1716
* * https://stackoverflow.com/questions/61779776/leak-canary-detects-memory-leaks-for-tablayout-with-viewpager2
1817
*/
19-
class ChildFragmentStateAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
18+
class BottomNavigationFragmentStateAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
2019
NavigableFragmentStateAdapter(fragmentManager, lifecycle) {
2120

2221
override fun getItemCount(): Int = 4
2322

2423
override fun createFragment(position: Int): Fragment {
2524
return when (position) {
2625

27-
0 -> HomeFragment()
26+
0 -> NavHostContainerFragment.createNavHostContainerFragment(
27+
R.layout.fragment_navhost_home,
28+
R.id.nested_nav_host_fragment_home
29+
)
2830

2931
// Vertical NavHost Post Fragment Container
3032
1 -> NavHostContainerFragment.createNavHostContainerFragment(

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,22 @@ class DynamicBottomNavigationStateAdapter(fragmentManager: FragmentManager, life
2727
// Home nav graph
2828
0 ->
2929
BaseNavHostFragment
30-
.createNavHostFragment(R.navigation.nav_graph_home)
30+
.createNavHostFragment(R.navigation.nav_graph_dfm_home_start)
3131

3232
// Dashboard nav graph
3333
1 ->
3434
BaseDynamicNavHostFragment
35-
.createDynamicNavHostFragment(R.navigation.nav_graph_dashboard_start)
35+
.createDynamicNavHostFragment(R.navigation.nav_graph_dfm_dashboard_start)
3636

3737
// Notification nav graph
3838
2 ->
3939
BaseNavHostFragment
40-
.createNavHostFragment(R.navigation.nav_graph_notification_start)
40+
.createNavHostFragment(R.navigation.nav_graph_dfm_notification_start)
4141

4242
// Account nav graph
4343
else ->
4444
BaseNavHostFragment
45-
.createNavHostFragment(R.navigation.nav_graph_account_start)
45+
.createNavHostFragment(R.navigation.nav_graph_dfm_account_start)
4646
}
4747
}
4848
}

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,46 @@ package com.smarttoolfactory.postdynamichilt.ui
33
import androidx.fragment.app.Fragment
44
import androidx.fragment.app.FragmentManager
55
import androidx.lifecycle.Lifecycle
6+
import androidx.navigation.fragment.NavHostFragment
67
import com.smarttoolfactory.core.ui.adapter.NavigableFragmentStateAdapter
78
import com.smarttoolfactory.core.ui.fragment.navhost.BaseDynamicNavHostFragment
89
import com.smarttoolfactory.core.ui.fragment.navhost.BaseNavHostFragment
910
import com.smarttoolfactory.postdynamichilt.R
1011

12+
// FIXME NOT working, solve the issue with Dynamic Fragments returning containerId 0
13+
14+
/**
15+
* FragmentStateAdapter to add [BaseDynamicNavHostFragment]s without adding extra wrapper fragment.
16+
* This adapter uses [BaseDynamicNavHostFragment.createDynamicNavHostFragment] to create a
17+
* [NavHostFragment] using the navigation resource as parameter
18+
*/
1119
class DynamicFragmentStateAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
1220
NavigableFragmentStateAdapter(fragmentManager, lifecycle) {
1321

14-
override fun getItemCount(): Int = 3
22+
override fun getItemCount(): Int = 4
1523

1624
override fun createFragment(position: Int): Fragment {
1725
return when (position) {
1826

19-
// Dashboard nav graph
27+
// Home nav graph
2028
0 ->
2129
BaseDynamicNavHostFragment
22-
.createDynamicNavHostFragment(R.navigation.nav_graph_home)
30+
.createDynamicNavHostFragment(R.navigation.nav_graph_dfm_home_start)
2331

24-
// Notification nav graph
32+
// Dashboard nav graph
2533
1 ->
34+
BaseDynamicNavHostFragment
35+
.createDynamicNavHostFragment(R.navigation.nav_graph_dfm_dashboard_start)
36+
37+
// Notification nav graph
38+
2 ->
2639
BaseNavHostFragment
27-
.createNavHostFragment(R.navigation.nav_graph_home)
40+
.createNavHostFragment(R.navigation.nav_graph_dfm_notification_start)
2841

2942
// Account nav graph
3043
else ->
3144
BaseNavHostFragment
32-
.createNavHostFragment(R.navigation.nav_graph_home)
45+
.createNavHostFragment(R.navigation.nav_graph_dfm_account_start)
3346
}
3447
}
3548
}

0 commit comments

Comments
(0)

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