Single activity approach (#30)

* CircleCI config fixes

* Implicit deeplinking via navController navigate

* Removed jacoco.exec files. Closes # 32
This commit is contained in:
Melih Aksoy
2019-08-21 17:15:01 +02:00
parent ac588ad89d
commit 2a90aba88b
36 changed files with 402 additions and 322 deletions

View File

@@ -37,4 +37,7 @@ dependencies {
compileOnly libraries.retrofit
compileOnly libraries.room
compileOnly libraries.paging
// Need for proper renders in xml previews
compileOnly libraries.constraintLayout
}

View File

@@ -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>

View 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
}
}

View File

@@ -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]
)

View 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
}

View 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>

View 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>