@@ -10,89 +10,95 @@ import com.ncapdevi.fragnav.FragNavLogger
1010import com.ncapdevi.fragnav.FragNavSwitchController
1111import com.ncapdevi.fragnav.FragNavTransactionOptions
1212import com.ncapdevi.fragnav.tabhistory.FragNavTabHistoryController
13+ import com.ncapdevi.fragnav.tabhistory.UniqueTabHistoryStrategy
1314import com.ncapdevi.sample.R
1415import com.ncapdevi.sample.fragments.*
1516import com.roughike.bottombar.BottomBar
1617
1718
1819class BottomTabsActivity : AppCompatActivity (), BaseFragment.FragmentNavigation, FragNavController.TransactionListener, FragNavController.RootFragmentListener {
20+ override val numberOfRootFragments: Int = 5
1921
20- private var fragNavController: FragNavController ? = null
22+ private val fragNavController: FragNavController = FragNavController (supportFragmentManager, R .id.container)
23+
24+ private lateinit var bottomBar: BottomBar
2125
2226 override fun onCreate (savedInstanceState : Bundle ? ) {
2327 super .onCreate(savedInstanceState)
2428 setContentView(com.ncapdevi.sample.R .layout.activity_bottom_tabs)
2529
26- val bottomBar = findViewById<BottomBar >(R .id.bottomBar)
27-
28- fragNavController = FragNavController .newBuilder(savedInstanceState,
29- supportFragmentManager,
30- R .id.container)
31- .transactionListener(this )
32- .rootFragmentListener(this , 5 )
33- .switchController(FragNavTabHistoryController .UNIQUE_TAB_HISTORY , object : FragNavSwitchController {
34- override fun switchTab (index : Int , transactionOptions : FragNavTransactionOptions ? ) {
35- bottomBar.selectTabAtPosition(index)
36- }
37- })
38- .fragmentHideStrategy(FragNavController .DETACH_ON_NAVIGATE_HIDE_ON_SWITCH )
39- .eager(true )
40- .logger(object : FragNavLogger {
41- override fun error (message : String , throwable : Throwable ) {
42- Log .e(TAG , message, throwable)
43- }
44- })
45- .build()
30+ bottomBar = findViewById(R .id.bottomBar)
31+
32+ fragNavController.apply {
33+ transactionListener = this @BottomTabsActivity
34+ rootFragmentListener = this @BottomTabsActivity
35+ createEager = true
36+ fragNavLogger = object : FragNavLogger {
37+ override fun error (message : String , throwable : Throwable ) {
38+ Log .e(TAG , message, throwable)
39+ }
40+ }
41+
42+ fragmentHideStrategy = FragNavController .DETACH_ON_NAVIGATE_HIDE_ON_SWITCH
43+
44+ navigationStrategy = UniqueTabHistoryStrategy (object : FragNavSwitchController {
45+ override fun switchTab (index : Int , transactionOptions : FragNavTransactionOptions ? ) {
46+ bottomBar.selectTabAtPosition(index)
47+ }
48+ })
49+ }
50+
51+ fragNavController.initialize(INDEX_NEARBY , savedInstanceState)
4652
4753 val initial = savedInstanceState == null
4854 if (initial) {
4955 bottomBar.selectTabAtPosition(INDEX_NEARBY )
5056 }
5157
5258
53- fragNavController? .executePendingTransactions()
59+ fragNavController.executePendingTransactions()
5460 bottomBar.setOnTabSelectListener({ tabId ->
5561 when (tabId) {
56- R .id.bb_menu_recents -> fragNavController? .switchTab(INDEX_RECENTS )
57- R .id.bb_menu_favorites -> fragNavController? .switchTab(INDEX_FAVORITES )
58- R .id.bb_menu_nearby -> fragNavController? .switchTab(INDEX_NEARBY )
59- R .id.bb_menu_friends -> fragNavController? .switchTab(INDEX_FRIENDS )
60- R .id.bb_menu_food -> fragNavController? .switchTab(INDEX_FOOD )
62+ R .id.bb_menu_recents -> fragNavController.switchTab(INDEX_RECENTS )
63+ R .id.bb_menu_favorites -> fragNavController.switchTab(INDEX_FAVORITES )
64+ R .id.bb_menu_nearby -> fragNavController.switchTab(INDEX_NEARBY )
65+ R .id.bb_menu_friends -> fragNavController.switchTab(INDEX_FRIENDS )
66+ R .id.bb_menu_food -> fragNavController.switchTab(INDEX_FOOD )
6167 }
6268 }, initial)
6369
64- bottomBar.setOnTabReselectListener { fragNavController? .clearStack() }
70+ bottomBar.setOnTabReselectListener { fragNavController.clearStack() }
6571
6672 }
6773
6874 override fun onBackPressed () {
69- if (fragNavController? .popFragment()? .not () == true ) {
75+ if (fragNavController.popFragment().not ()) {
7076 super .onBackPressed()
7177 }
7278 }
7379
7480 override fun onSaveInstanceState (outState : Bundle ? ) {
7581 super .onSaveInstanceState(outState)
76- fragNavController? .onSaveInstanceState(outState!! )
82+ fragNavController.onSaveInstanceState(outState!! )
7783
7884 }
7985
8086 override fun pushFragment (fragment : Fragment ) {
81- fragNavController? .pushFragment(fragment)
87+ fragNavController.pushFragment(fragment)
8288
8389 }
8490
8591 override fun onTabTransaction (fragment : Fragment ? , index : Int ) {
8692 // If we have a backstack, show the back button
87- supportActionBar?.setDisplayHomeAsUpEnabled(fragNavController? .isRootFragment? .not () == true )
93+ supportActionBar?.setDisplayHomeAsUpEnabled(fragNavController.isRootFragment.not ())
8894
8995 }
9096
9197
9298 override fun onFragmentTransaction (fragment : Fragment ? , transactionType : FragNavController .TransactionType ) {
9399 // do fragmentty stuff. Maybe change title, I'm not going to tell you how to live your life
94100 // If we have a backstack, show the back button
95- supportActionBar?.setDisplayHomeAsUpEnabled(fragNavController? .isRootFragment? .not () == true )
101+ supportActionBar?.setDisplayHomeAsUpEnabled(fragNavController.isRootFragment.not ())
96102
97103 }
98104
@@ -109,7 +115,7 @@ class BottomTabsActivity : AppCompatActivity(), BaseFragment.FragmentNavigation,
109115
110116 override fun onOptionsItemSelected (item : MenuItem ): Boolean {
111117 when (item.itemId) {
112- android.R .id.home -> fragNavController? .popFragment()
118+ android.R .id.home -> fragNavController.popFragment()
113119 }
114120 return true
115121 }
0 commit comments