mirror of
https://github.com/melihaksoy/Android-Kotlin-Modulerized-CleanArchitecture.git
synced 2026-03-20 08:34:30 +01:00
Single activity approach (#30)
* CircleCI config fixes * Implicit deeplinking via navController navigate * Removed jacoco.exec files. Closes # 32
This commit is contained in:
@@ -37,4 +37,7 @@ dependencies {
|
||||
compileOnly libraries.retrofit
|
||||
compileOnly libraries.room
|
||||
compileOnly libraries.paging
|
||||
|
||||
// Need for proper renders in xml previews
|
||||
compileOnly libraries.constraintLayout
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.melih.rocketscience">
|
||||
|
||||
@@ -13,5 +14,15 @@
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
tools:ignore="GoogleAppIndexingWarning" />
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
|
||||
<activity android:name=".MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<nav-graph android:value="@navigation/nav_main" />
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
31
app/src/main/kotlin/com/melih/rocketscience/MainActivity.kt
Normal file
31
app/src/main/kotlin/com/melih/rocketscience/MainActivity.kt
Normal file
@@ -0,0 +1,31 @@
|
||||
package com.melih.rocketscience
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.ui.NavigationUI
|
||||
import com.melih.rocketscience.databinding.MainActivityBinding
|
||||
import dagger.android.support.DaggerAppCompatActivity
|
||||
|
||||
class MainActivity : DaggerAppCompatActivity() {
|
||||
|
||||
private lateinit var binding: MainActivityBinding
|
||||
private lateinit var navController: NavController
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
|
||||
|
||||
navController = findNavController(R.id.nav_host_fragment)
|
||||
NavigationUI.setupWithNavController(binding.toolbar, navController)
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
if (!NavigationUI.navigateUp(navController, null)) {
|
||||
onBackPressed()
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.melih.rocketscience.di
|
||||
|
||||
import com.melih.core.di.CoreComponent
|
||||
import com.melih.detail.di.DetailFeatureModule
|
||||
import com.melih.list.di.LaunchesFeatureModule
|
||||
import com.melih.rocketscience.App
|
||||
import dagger.Component
|
||||
import dagger.android.AndroidInjectionModule
|
||||
@@ -11,8 +9,7 @@ import dagger.android.AndroidInjector
|
||||
@AppScope
|
||||
@Component(
|
||||
modules = [AndroidInjectionModule::class,
|
||||
LaunchesFeatureModule::class,
|
||||
DetailFeatureModule::class],
|
||||
AppModule::class],
|
||||
|
||||
dependencies = [CoreComponent::class]
|
||||
)
|
||||
|
||||
19
app/src/main/kotlin/com/melih/rocketscience/di/AppModule.kt
Normal file
19
app/src/main/kotlin/com/melih/rocketscience/di/AppModule.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.melih.rocketscience.di
|
||||
|
||||
import com.melih.detail.di.DetailContributor
|
||||
import com.melih.list.di.LaunchesContributor
|
||||
import com.melih.rocketscience.MainActivity
|
||||
import dagger.Module
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
|
||||
@Module
|
||||
abstract class AppModule {
|
||||
|
||||
|
||||
@ContributesAndroidInjector(
|
||||
modules = [
|
||||
LaunchesContributor::class,
|
||||
DetailContributor::class]
|
||||
)
|
||||
abstract fun mainActivity(): MainActivity
|
||||
}
|
||||
27
app/src/main/res/layout/activity_main.xml
Normal file
27
app/src/main/res/layout/activity_main.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data class="MainActivityBinding" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:actionBarSize"
|
||||
android:background="@color/colorPrimary" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/nav_host_fragment"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:defaultNavHost="true"
|
||||
app:navGraph="@navigation/nav_main" />
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
10
app/src/main/res/navigation/nav_main.xml
Normal file
10
app/src/main/res/navigation/nav_main.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/nav_main"
|
||||
app:startDestination="@id/nav_launches">
|
||||
|
||||
<include app:graph="@navigation/nav_launches" />
|
||||
<include app:graph="@navigation/nav_detail" />
|
||||
</navigation>
|
||||
Reference in New Issue
Block a user