From bb6613eb35ca15ecf86c9c1db1e8541da584152c Mon Sep 17 00:00:00 2001 From: Carlos Martinez Date: Wed, 5 Feb 2020 20:48:42 -0300 Subject: [PATCH] implement back button navigation and toolbar labeling --- .../res/navigation/albumlist_navigation.xml | 6 +++++- .../com/hako/friendlists/view/MainActivity.kt | 8 ++++++++ .../viewmodel/NavigationViewmodel.kt | 4 ++++ app/src/main/res/layout/activity_main.xml | 20 ++++++++++++++----- .../res/navigation/photolist_navigation.xml | 2 +- .../hako/userlist/feature/UserlistFragment.kt | 2 +- .../userlist/navigation/UserlistNavigation.kt | 2 +- .../res/navigation/userlist_navigation.xml | 2 +- 8 files changed, 36 insertions(+), 10 deletions(-) diff --git a/albumlist/src/main/res/navigation/albumlist_navigation.xml b/albumlist/src/main/res/navigation/albumlist_navigation.xml index 97da511..2cf2e9e 100644 --- a/albumlist/src/main/res/navigation/albumlist_navigation.xml +++ b/albumlist/src/main/res/navigation/albumlist_navigation.xml @@ -9,6 +9,10 @@ android:id="@+id/albumlistFragment" android:name="com.hako.albumlist.feature.AlbumlistFragment" tools:layout="@layout/fragment_albumlist" - android:label="AlbumlistFragment" /> + android:label="{actionTitle}"> + + \ No newline at end of file diff --git a/app/src/main/java/com/hako/friendlists/view/MainActivity.kt b/app/src/main/java/com/hako/friendlists/view/MainActivity.kt index ecd5ff1..43a6891 100644 --- a/app/src/main/java/com/hako/friendlists/view/MainActivity.kt +++ b/app/src/main/java/com/hako/friendlists/view/MainActivity.kt @@ -3,6 +3,7 @@ package com.hako.friendlists.view import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.navigation.findNavController +import androidx.navigation.ui.NavigationUI.setupActionBarWithNavController import com.hako.base.extensions.observeNonNull import com.hako.base.navigation.NavigationRouter import com.hako.friendlists.BuildConfig @@ -36,10 +37,17 @@ class MainActivity : AppCompatActivity() { // Pair.second is a Bundle navController.navigate(pair.first, pair.second) } + + setupActionBarWithNavController(this, navController) } private fun setupPicasso() { // Show cache indicator on images just for debug builds picasso.setIndicatorsEnabled(BuildConfig.DEBUG) } + + override fun onSupportNavigateUp(): Boolean { + navController.navigateUp() + return super.onSupportNavigateUp() + } } \ No newline at end of file diff --git a/app/src/main/java/com/hako/friendlists/viewmodel/NavigationViewmodel.kt b/app/src/main/java/com/hako/friendlists/viewmodel/NavigationViewmodel.kt index 5082324..4c8bb76 100644 --- a/app/src/main/java/com/hako/friendlists/viewmodel/NavigationViewmodel.kt +++ b/app/src/main/java/com/hako/friendlists/viewmodel/NavigationViewmodel.kt @@ -12,6 +12,9 @@ import com.hako.friendlists.R import com.hako.photolist.feature.PHOTOLIST_FRAGMENT_BUNDLE_ALBUM_ID import com.hako.userlist.navigation.UserlistNavigation +// This sets the fragment title, it's referenced in every navigation +const val FRAGMENT_TITLE = "actionTitle" + class NavigationViewmodel : ViewModel() { val navigate = MutableLiveData>() @@ -29,6 +32,7 @@ class NavigationViewmodel : ViewModel() { is UserlistNavigation.ClickedOnUser -> navigate.postValue( buildNavigation(R.id.action_userlistFragment_to_albumlistFragment, Bundle().apply { putInt(ALBUMLIST_FRAGMENT_BUNDLE_USER_ID, event.userId) + putString(FRAGMENT_TITLE, event.userName) }) ) } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index dd69f9f..626a29b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,8 +1,18 @@ - \ No newline at end of file + android:layout_height="match_parent"> + + + + diff --git a/photolist/src/main/res/navigation/photolist_navigation.xml b/photolist/src/main/res/navigation/photolist_navigation.xml index a11943a..75cb222 100644 --- a/photolist/src/main/res/navigation/photolist_navigation.xml +++ b/photolist/src/main/res/navigation/photolist_navigation.xml @@ -9,6 +9,6 @@ android:id="@+id/photolistFragment" android:name="com.hako.photolist.feature.PhotolistFragment" tools:layout="@layout/fragment_photolist" - android:label="PhotolistFragment" /> + android:label="Photos" /> \ No newline at end of file diff --git a/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt b/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt index 3822d10..64cda99 100644 --- a/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt +++ b/userlist/src/main/java/com/hako/userlist/feature/UserlistFragment.kt @@ -75,7 +75,7 @@ class UserlistFragment : Fragment() { layoutManager = LinearLayoutManager(context) adapter = listAdapter.apply { onItemClick = { - navigation.sendNavigation(UserlistNavigation.ClickedOnUser(it.id)) + navigation.sendNavigation(UserlistNavigation.ClickedOnUser(it.id, it.realName)) } onFavoriteClick = { diff --git a/userlist/src/main/java/com/hako/userlist/navigation/UserlistNavigation.kt b/userlist/src/main/java/com/hako/userlist/navigation/UserlistNavigation.kt index f2d106e..3fb87d5 100644 --- a/userlist/src/main/java/com/hako/userlist/navigation/UserlistNavigation.kt +++ b/userlist/src/main/java/com/hako/userlist/navigation/UserlistNavigation.kt @@ -3,5 +3,5 @@ package com.hako.userlist.navigation import com.hako.base.navigation.NavigationEvent sealed class UserlistNavigation : NavigationEvent { - data class ClickedOnUser(val userId: Int) : UserlistNavigation() + data class ClickedOnUser(val userId: Int, val userName: String) : UserlistNavigation() } diff --git a/userlist/src/main/res/navigation/userlist_navigation.xml b/userlist/src/main/res/navigation/userlist_navigation.xml index db70b2f..c680ef2 100644 --- a/userlist/src/main/res/navigation/userlist_navigation.xml +++ b/userlist/src/main/res/navigation/userlist_navigation.xml @@ -9,6 +9,6 @@ android:id="@+id/userlistFragment" android:name="com.hako.userlist.feature.UserlistFragment" tools:layout="@layout/fragment_userlist" - android:label="UserlistFragment" /> + android:label="Friendlist" /> \ No newline at end of file