├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ └── layout │ │ │ │ ├── activity_detail.xml │ │ │ │ └── activity_main.xml │ │ ├── java │ │ │ └── iammert │ │ │ │ └── com │ │ │ │ └── dagger_android_injection │ │ │ │ ├── ui │ │ │ │ ├── main │ │ │ │ │ ├── MainView.java │ │ │ │ │ ├── MainPresenter.java │ │ │ │ │ ├── MainActivityModule.java │ │ │ │ │ ├── MainPresenterImpl.java │ │ │ │ │ └── MainActivity.java │ │ │ │ └── detail │ │ │ │ │ ├── DetailView.java │ │ │ │ │ ├── DetailPresenter.java │ │ │ │ │ ├── fragment │ │ │ │ │ ├── DetailFragmentView.java │ │ │ │ │ ├── DetailFragmentModule.java │ │ │ │ │ ├── DetailFragmentPresenter.java │ │ │ │ │ └── DetailFragment.java │ │ │ │ │ ├── DetailFragmentProvider.java │ │ │ │ │ ├── DetailActivityModule.java │ │ │ │ │ ├── DetailPresenterImpl.java │ │ │ │ │ └── DetailActivity.java │ │ │ │ ├── data │ │ │ │ └── ApiService.java │ │ │ │ ├── di │ │ │ │ ├── AppModule.java │ │ │ │ ├── ActivityBuilder.java │ │ │ │ └── AppComponent.java │ │ │ │ └── AndroidSampleApp.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── iammert │ │ │ └── com │ │ │ └── dagger_android_injection │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── iammert │ │ └── com │ │ └── dagger_android_injection │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .idea ├── markdown-navigator │ └── profiles_settings.xml ├── modules.xml ├── runConfigurations.xml ├── gradle.xml └── misc.xml ├── .gitignore ├── README.md ├── gradle.properties ├── gradlew.bat └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | dagger-android-injection 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iammert/dagger-android-injection/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/main/MainView.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.main; 2 | 3 | /** 4 | * Created by mertsimsek on 25/05/2017. 5 | */ 6 | 7 | public interface MainView { 8 | void onMainLoaded(); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/main/MainPresenter.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.main; 2 | 3 | /** 4 | * Created by mertsimsek on 25/05/2017. 5 | */ 6 | 7 | public interface MainPresenter { 8 | void loadMain(); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/DetailView.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail; 2 | 3 | /** 4 | * Created by mertsimsek on 25/05/2017. 5 | */ 6 | 7 | public interface DetailView { 8 | void onDetailLoaded(); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/DetailPresenter.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail; 2 | 3 | /** 4 | * Created by mertsimsek on 25/05/2017. 5 | */ 6 | 7 | public interface DetailPresenter { 8 | void loadDetail(); 9 | } 10 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Nov 03 15:44:43 IST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dagger-android-injection 2 | Sample project explains Dependency Injection in Android using dagger-android framework. 3 | 4 | # blogposts 5 | https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe 6 | 7 | https://medium.com/@iammert/new-android-injector-with-dagger-2-part-2-4af05fd783d0 8 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/fragment/DetailFragmentView.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail.fragment; 2 | 3 | /** 4 | * Created by mertsimsek on 02/06/2017. 5 | */ 6 | 7 | public interface DetailFragmentView { 8 | 9 | void onDetailFragmentLoaded(); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/data/ApiService.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.data; 2 | 3 | import javax.inject.Inject; 4 | 5 | /** 6 | * Created by mertsimsek on 26/05/2017. 7 | */ 8 | 9 | public class ApiService { 10 | 11 | @Inject 12 | public ApiService() { 13 | } 14 | 15 | public void loadData(){ 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/di/AppModule.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.di; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import dagger.Binds; 7 | import dagger.Module; 8 | 9 | /** 10 | * Created by mertsimsek on 25/05/2017. 11 | */ 12 | @Module 13 | public abstract class AppModule { 14 | 15 | @Binds 16 | abstract Context provideContext(Application application); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/fragment/DetailFragmentModule.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail.fragment; 2 | 3 | import dagger.Module; 4 | import dagger.Provides; 5 | 6 | /** 7 | * Created by mertsimsek on 02/06/2017. 8 | */ 9 | @Module 10 | public class DetailFragmentModule { 11 | 12 | @Provides 13 | DetailFragmentView provideDetailFragmentView(DetailFragment detailFragment){ 14 | return detailFragment; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /app/src/test/java/iammert/com/dagger_android_injection/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/fragment/DetailFragmentPresenter.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail.fragment; 2 | 3 | import javax.inject.Inject; 4 | 5 | /** 6 | * Created by mertsimsek on 02/06/2017. 7 | */ 8 | 9 | public class DetailFragmentPresenter { 10 | 11 | DetailFragmentView detailFragmentView; 12 | 13 | @Inject 14 | public DetailFragmentPresenter(DetailFragmentView detailFragmentView) { 15 | this.detailFragmentView = detailFragmentView; 16 | detailFragmentView.onDetailFragmentLoaded(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/DetailFragmentProvider.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail; 2 | 3 | import dagger.Module; 4 | import dagger.android.ContributesAndroidInjector; 5 | import iammert.com.dagger_android_injection.ui.detail.fragment.DetailFragment; 6 | import iammert.com.dagger_android_injection.ui.detail.fragment.DetailFragmentModule; 7 | 8 | /** 9 | * Created by mertsimsek on 02/06/2017. 10 | */ 11 | @Module 12 | public abstract class DetailFragmentProvider { 13 | 14 | @ContributesAndroidInjector(modules = DetailFragmentModule.class) 15 | abstract DetailFragment provideDetailFragmentFactory(); 16 | } 17 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/main/MainActivityModule.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.main; 2 | 3 | import dagger.Binds; 4 | import dagger.Module; 5 | import dagger.Provides; 6 | import iammert.com.dagger_android_injection.data.ApiService; 7 | 8 | /** 9 | * Created by mertsimsek on 25/05/2017. 10 | */ 11 | @Module 12 | public abstract class MainActivityModule { 13 | 14 | @Provides 15 | static MainPresenter provideMainPresenter(MainView mainView, ApiService apiService) { 16 | return new MainPresenterImpl(mainView, apiService); 17 | } 18 | 19 | @Binds 20 | abstract MainView provideMainView(MainActivity mainActivity); 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/detail/DetailActivityModule.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.detail; 2 | 3 | import dagger.Binds; 4 | import dagger.Module; 5 | import dagger.Provides; 6 | import iammert.com.dagger_android_injection.data.ApiService; 7 | 8 | /** 9 | * Created by mertsimsek on 30/05/2017. 10 | */ 11 | @Module 12 | public abstract class DetailActivityModule { 13 | 14 | @Provides 15 | static DetailPresenter provideDetailPresenter(DetailView detailView, ApiService apiService) { 16 | return new DetailPresenterImpl(detailView, apiService); 17 | } 18 | 19 | @Binds 20 | abstract DetailView provideDetailView(DetailActivity detailActivity); 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/iammert/com/dagger_android_injection/ui/main/MainPresenterImpl.java: -------------------------------------------------------------------------------- 1 | package iammert.com.dagger_android_injection.ui.main; 2 | 3 | import javax.inject.Inject; 4 | 5 | import iammert.com.dagger_android_injection.data.ApiService; 6 | 7 | /** 8 | * Created by mertsimsek on 25/05/2017. 9 | */ 10 | 11 | public class MainPresenterImpl implements MainPresenter{ 12 | MainView mainView; 13 | ApiService apiService; 14 | 15 | @Inject 16 | public MainPresenterImpl(MainView mainView, ApiService apiService) { 17 | this.mainView = mainView; 18 | this.apiService = apiService; 19 | } 20 | 21 | public void loadMain(){ 22 | apiService.loadData(); 23 | mainView.onMainLoaded(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 |