Skip to content

Commit 07bae82

Browse files
authored
Merge pull request #150 from ncapdevi/remove-builder
remove-builder
2 parents 7930919 + 360a68f commit 07bae82

File tree

10 files changed

+227
-335
lines changed

10 files changed

+227
-335
lines changed

.idea/.name

Lines changed: 0 additions & 1 deletion
This file was deleted.

.idea/modules.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/ncapdevi/sample/activities/BottomTabsActivity.kt

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,89 +10,95 @@ import com.ncapdevi.fragnav.FragNavLogger
1010
import com.ncapdevi.fragnav.FragNavSwitchController
1111
import com.ncapdevi.fragnav.FragNavTransactionOptions
1212
import com.ncapdevi.fragnav.tabhistory.FragNavTabHistoryController
13+
import com.ncapdevi.fragnav.tabhistory.UniqueTabHistoryStrategy
1314
import com.ncapdevi.sample.R
1415
import com.ncapdevi.sample.fragments.*
1516
import com.roughike.bottombar.BottomBar
1617

1718

1819
class 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
}

app/src/main/java/com/ncapdevi/sample/activities/NavDrawerActivity.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class NavDrawerActivity : AppCompatActivity(), NavigationView.OnNavigationItemSe
1919
//Better convention to properly name the indices what they are in your app
2020

2121

22-
private var fragNavController: FragNavController? = null
22+
private var fragNavController: FragNavController = FragNavController(supportFragmentManager, R.id.container)
2323

2424
override fun onCreate(savedInstanceState: Bundle?) {
2525
super.onCreate(savedInstanceState)
@@ -51,48 +51,51 @@ class NavDrawerActivity : AppCompatActivity(), NavigationView.OnNavigationItemSe
5151
RecentsFragment.newInstance(0),
5252
FavoritesFragment.newInstance(0))
5353

54-
fragNavController = FragNavController.newBuilder(savedInstanceState, supportFragmentManager, R.id.container)
55-
.rootFragments(fragments)
56-
.defaultTransactionOptions(FragNavTransactionOptions.newBuilder().customAnimations(R.anim.slide_in_from_right, R.anim.slide_out_to_left, R.anim.slide_in_from_left, R.anim.slide_out_to_right).build())
57-
.build()
54+
fragNavController.apply {
55+
rootFragments = fragments
56+
defaultTransactionOptions = FragNavTransactionOptions.newBuilder().customAnimations(R.anim.slide_in_from_right, R.anim.slide_out_to_left, R.anim.slide_in_from_left, R.anim.slide_out_to_right).build()
57+
}
58+
59+
fragNavController.initialize(INDEX_RECENTS,savedInstanceState)
60+
5861

5962
}
6063

6164
override fun onBackPressed() {
6265
val drawer = findViewById<DrawerLayout>(R.id.drawer_layout)
6366
when {
6467
drawer.isDrawerOpen(GravityCompat.START) -> drawer.closeDrawer(GravityCompat.START)
65-
fragNavController?.isRootFragment?.not() == true -> fragNavController?.popFragment()
68+
fragNavController.isRootFragment.not() -> fragNavController.popFragment()
6669
else -> super.onBackPressed()
6770
}
6871
}
6972

7073
override fun onSaveInstanceState(outState: Bundle?) {
7174
super.onSaveInstanceState(outState)
72-
fragNavController?.onSaveInstanceState(outState)
75+
fragNavController.onSaveInstanceState(outState)
7376
}
7477

7578
override fun onNavigationItemSelected(item: MenuItem): Boolean {
7679
when (item.itemId) {
77-
R.id.bb_menu_recents -> fragNavController?.switchTab(INDEX_RECENTS)
78-
R.id.bb_menu_favorites -> fragNavController?.switchTab(INDEX_FAVORITES)
79-
R.id.bb_menu_nearby -> fragNavController?.switchTab(INDEX_NEARBY)
80-
R.id.bb_menu_friends -> fragNavController?.switchTab(INDEX_FRIENDS)
81-
R.id.bb_menu_food -> fragNavController?.switchTab(INDEX_FOOD)
82-
R.id.bb_menu_recents2 -> fragNavController?.switchTab(INDEX_RECENTS2)
83-
R.id.bb_menu_favorites2 -> fragNavController?.switchTab(INDEX_FAVORITES2)
84-
R.id.bb_menu_nearby2 -> fragNavController?.switchTab(INDEX_NEARBY2)
85-
R.id.bb_menu_friends2 -> fragNavController?.switchTab(INDEX_FRIENDS2)
86-
R.id.bb_menu_food2 -> fragNavController?.switchTab(INDEX_FOOD2)
87-
R.id.bb_menu_recents3 -> fragNavController?.switchTab(INDEX_RECENTS3)
88-
R.id.bb_menu_favorites3 -> fragNavController?.switchTab(INDEX_FAVORITES3)
80+
R.id.bb_menu_recents -> fragNavController.switchTab(INDEX_RECENTS)
81+
R.id.bb_menu_favorites -> fragNavController.switchTab(INDEX_FAVORITES)
82+
R.id.bb_menu_nearby -> fragNavController.switchTab(INDEX_NEARBY)
83+
R.id.bb_menu_friends -> fragNavController.switchTab(INDEX_FRIENDS)
84+
R.id.bb_menu_food -> fragNavController.switchTab(INDEX_FOOD)
85+
R.id.bb_menu_recents2 -> fragNavController.switchTab(INDEX_RECENTS2)
86+
R.id.bb_menu_favorites2 -> fragNavController.switchTab(INDEX_FAVORITES2)
87+
R.id.bb_menu_nearby2 -> fragNavController.switchTab(INDEX_NEARBY2)
88+
R.id.bb_menu_friends2 -> fragNavController.switchTab(INDEX_FRIENDS2)
89+
R.id.bb_menu_food2 -> fragNavController.switchTab(INDEX_FOOD2)
90+
R.id.bb_menu_recents3 -> fragNavController.switchTab(INDEX_RECENTS3)
91+
R.id.bb_menu_favorites3 -> fragNavController.switchTab(INDEX_FAVORITES3)
8992
}
9093
val drawer = findViewById<DrawerLayout>(R.id.drawer_layout)
9194
drawer.closeDrawer(GravityCompat.START)
9295
return true
9396
}
9497

9598
override fun pushFragment(fragment: Fragment) {
96-
fragNavController?.pushFragment(fragment)
99+
fragNavController.pushFragment(fragment)
97100
}
98101
}

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
buildscript {
2-
ext.kotlin_version = '1.2.21'
2+
ext.kotlin_version = '1.2.40'
33
repositories {
44
jcenter()
55
google()
66

77
}
88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.0.1'
9+
classpath 'com.android.tools.build:gradle:3.1.1'
1010
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1111
}
1212
}
@@ -26,7 +26,7 @@ ext {
2626
// App dependencies
2727

2828
junitVersion = '4.12'
29-
supportVersion = '27.0.2'
29+
supportVersion = '27.1.1'
3030
buildToolsVersion = '27.0.3'
3131
minSdkVersion = 14
3232
targetSdkVersion = 27

frag-nav/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ apply plugin: 'maven'
1010
apply plugin: 'com.github.kt3k.coveralls'
1111

1212
ext {
13-
libraryVersionCode = 23
14-
libraryVersionName = '2.4.0'
13+
libraryVersionCode = 24
14+
libraryVersionName = '3.0.0-RC'
1515

1616
//Bintray and Maven
1717
bintrayRepo = 'maven'

0 commit comments

Comments
 (0)