From 6a2722177ee4d70adb6d0fef3c7762ba6189857e Mon Sep 17 00:00:00 2001 From: Carlos Martinez Date: Sun, 2 Feb 2020 14:59:33 -0300 Subject: [PATCH] implement navigation --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 2 +- .../com/hako/friendlists/view/HomeActivity.kt | 7 ---- .../com/hako/friendlists/view/MainActivity.kt | 22 +++++++++++++ app/src/main/res/layout/activity_main.xml | 8 +++++ .../main/res/navigation/main_navigation.xml | 9 +++++ app/versions.gradle | 33 ------------------- base/build.gradle | 2 ++ .../base/extensions/NavigationExtensions.kt | 19 +++++++++++ base/versions.gradle | 3 ++ .../friendlist/feature/UserlistFragment.kt | 12 ++++++- .../src/main/res/layout/fragment_userlist.xml | 15 +++++++++ .../res/navigation/userlist_navigation.xml | 14 ++++++++ 13 files changed, 105 insertions(+), 43 deletions(-) delete mode 100644 app/src/main/java/com/hako/friendlists/view/HomeActivity.kt create mode 100644 app/src/main/java/com/hako/friendlists/view/MainActivity.kt create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/navigation/main_navigation.xml delete mode 100644 app/versions.gradle create mode 100644 base/src/main/java/com/hako/base/extensions/NavigationExtensions.kt create mode 100644 userlist/src/main/res/layout/fragment_userlist.xml create mode 100644 userlist/src/main/res/navigation/userlist_navigation.xml diff --git a/app/build.gradle b/app/build.gradle index 552d861..4a238fd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,4 +1,4 @@ -apply from: 'versions.gradle' +apply from: '../versions.gradle' apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a241d9b..779efa4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,7 +12,7 @@ android:theme="@style/AppTheme"> diff --git a/app/src/main/java/com/hako/friendlists/view/HomeActivity.kt b/app/src/main/java/com/hako/friendlists/view/HomeActivity.kt deleted file mode 100644 index 3b3e7ed..0000000 --- a/app/src/main/java/com/hako/friendlists/view/HomeActivity.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.hako.friendlists.view - -import androidx.appcompat.app.AppCompatActivity - -class HomeActivity : AppCompatActivity() { - -} \ 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 new file mode 100644 index 0000000..3652198 --- /dev/null +++ b/app/src/main/java/com/hako/friendlists/view/MainActivity.kt @@ -0,0 +1,22 @@ +package com.hako.friendlists.view + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.navigation.findNavController +import com.hako.friendlists.R + +class MainActivity : AppCompatActivity() { + + private val navController by lazy { findNavController(R.id.main_fragment_container) } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + setupNavigation() + } + + private fun setupNavigation() { + navController.setGraph(R.navigation.main_navigation) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..cf47f54 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/navigation/main_navigation.xml b/app/src/main/res/navigation/main_navigation.xml new file mode 100644 index 0000000..4befeb8 --- /dev/null +++ b/app/src/main/res/navigation/main_navigation.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/versions.gradle b/app/versions.gradle deleted file mode 100644 index 1c984d7..0000000 --- a/app/versions.gradle +++ /dev/null @@ -1,33 +0,0 @@ -ext.deps = [:] - -def versions = [:] -versions.kotlin = "1.3.41" -versions.gradle = "3.5.3" - -def deps = [:] - -def project = [:] -project.kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin" -project.gradle = "com.android.tools.build:gradle:$versions.gradle" -deps.project = project - -def build_versions = [:] -build_versions.min_sdk = 21 -build_versions.target_sdk = 29 -build_versions.build_tools = "29.0.3" -ext.build_versions = build_versions - -def kotlin = [:] -kotlin.version = "$versions.kotlin" -kotlin.std_lib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin" -deps.kotlin = kotlin - -ext.deps = deps - -def addRepos(RepositoryHandler handler) { - handler.google() - handler.jcenter() - handler.maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } -} - -ext.addRepos = this.&addRepos diff --git a/base/build.gradle b/base/build.gradle index 817b5e5..b6dffda 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -39,6 +39,8 @@ dependencies { api deps.androidx.lifecycle_ext api deps.androidx.lifecycle_viewmodel api deps.androidx.recycler_view + api deps.androidx.navigation_fragment + api deps.androidx.navigation_ui api deps.retrofit.runtime api deps.retrofit.gson api deps.retrofit.rx diff --git a/base/src/main/java/com/hako/base/extensions/NavigationExtensions.kt b/base/src/main/java/com/hako/base/extensions/NavigationExtensions.kt new file mode 100644 index 0000000..0045856 --- /dev/null +++ b/base/src/main/java/com/hako/base/extensions/NavigationExtensions.kt @@ -0,0 +1,19 @@ +package com.hako.base.extensions + +import androidx.annotation.IdRes +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.NavHostFragment + +fun AppCompatActivity.findNavHostFragment(@IdRes id: Int) = + supportFragmentManager.findFragmentById(id) as NavHostFragment + +fun Fragment.findNavHostFragment(@IdRes id: Int) = + childFragmentManager.findFragmentById(id) as NavHostFragment + +fun Fragment.findNavController(@IdRes id: Int) = + androidx.navigation.Navigation.findNavController(view?.findViewById(id) ?: viewNotFound(id, this)) + +private fun viewNotFound(@IdRes id: Int, fragment: Fragment): Nothing = throw IllegalStateException( + "View ID $id at '${fragment::class.java.simpleName}' not found." +) \ No newline at end of file diff --git a/base/versions.gradle b/base/versions.gradle index b8ac739..be2f710 100644 --- a/base/versions.gradle +++ b/base/versions.gradle @@ -7,6 +7,7 @@ versions.androidx_core = "1.1.0" versions.androidx_constraint_layout = "1.1.3" versions.androidx_lifecycle = "2.2.0" versions.androidx_recycler_view = "1.1.0" +versions.androidx_navigation = "2.2.0" versions.okhttp_logging_interceptor = "4.3.1" versions.retrofit = "2.7.1" versions.timber = "4.7.1" @@ -33,6 +34,8 @@ androidx.constraint_layout = "androidx.constraintlayout:constraintlayout:$versio androidx.lifecycle_ext = "androidx.lifecycle:lifecycle-extensions:$versions.androidx_lifecycle" androidx.lifecycle_viewmodel = "androidx.lifecycle:lifecycle-viewmodel-ktx:$versions.androidx_lifecycle" androidx.recycler_view = "androidx.recyclerview:recyclerview:$versions.androidx_recycler_view" +androidx.navigation_fragment = "androidx.navigation:navigation-fragment-ktx:$versions.androidx_navigation" +androidx.navigation_ui = "androidx.navigation:navigation-ui-ktx:$versions.androidx_navigation" deps.androidx = androidx def retrofit = [:] diff --git a/userlist/src/main/java/com/hako/friendlist/feature/UserlistFragment.kt b/userlist/src/main/java/com/hako/friendlist/feature/UserlistFragment.kt index 509c2e1..05c0fbf 100644 --- a/userlist/src/main/java/com/hako/friendlist/feature/UserlistFragment.kt +++ b/userlist/src/main/java/com/hako/friendlist/feature/UserlistFragment.kt @@ -1,4 +1,14 @@ package com.hako.friendlist.feature -class UserlistFragment { +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.hako.friendlist_userlist.R + +class UserlistFragment : Fragment() { + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + return inflater.inflate(R.layout.fragment_userlist, container, false) + } } \ No newline at end of file diff --git a/userlist/src/main/res/layout/fragment_userlist.xml b/userlist/src/main/res/layout/fragment_userlist.xml new file mode 100644 index 0000000..6c7bfe6 --- /dev/null +++ b/userlist/src/main/res/layout/fragment_userlist.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/userlist/src/main/res/navigation/userlist_navigation.xml b/userlist/src/main/res/navigation/userlist_navigation.xml new file mode 100644 index 0000000..2343782 --- /dev/null +++ b/userlist/src/main/res/navigation/userlist_navigation.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file