Skip to content

Commit fe6cdd4

Browse files
committed
use dagger-android application,activity,fragment classes
1 parent 5cf00f7 commit fe6cdd4

12 files changed

+50
-82
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
22

33
android {
44
compileSdkVersion 25
5-
buildToolsVersion "25.0.2"
5+
buildToolsVersion '26.0.2'
66
defaultConfig {
77
applicationId "iammert.com.dagger_android_injection"
88
minSdkVersion 15
Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,21 @@
11
package iammert.com.dagger_android_injection;
22

3-
import android.app.Activity;
4-
import android.app.Application;
5-
6-
import javax.inject.Inject;
7-
8-
import dagger.android.DispatchingAndroidInjector;
9-
import dagger.android.HasActivityInjector;
3+
import dagger.android.AndroidInjector;
4+
import dagger.android.DaggerApplication;
5+
import iammert.com.dagger_android_injection.di.AppComponent;
106
import iammert.com.dagger_android_injection.di.DaggerAppComponent;
117

128

139
/**
1410
* Created by mertsimsek on 25/05/2017.
1511
*/
1612

17-
public class AndroidSampleApp extends Application implements HasActivityInjector {
18-
19-
@Inject
20-
DispatchingAndroidInjector<Activity> activityDispatchingAndroidInjector;
13+
public class AndroidSampleApp extends DaggerApplication {
2114

22-
@Override
23-
public void onCreate() {
24-
super.onCreate();
25-
DaggerAppComponent
26-
.builder()
27-
.application(this)
28-
.build()
29-
.inject(this);
30-
31-
}
3215

33-
@Override
34-
public DispatchingAndroidInjector<Activity> activityInjector() {
35-
return activityDispatchingAndroidInjector;
16+
protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
17+
AppComponent appComponent = DaggerAppComponent.builder().application(this).build();
18+
appComponent.inject(this);
19+
return appComponent;
3620
}
3721
}

app/src/main/java/iammert/com/dagger_android_injection/di/AppComponent.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,34 @@
22

33
import android.app.Application;
44

5+
import javax.inject.Singleton;
6+
57
import dagger.BindsInstance;
68
import dagger.Component;
7-
import dagger.android.AndroidInjectionModule;
9+
import dagger.android.AndroidInjector;
10+
import dagger.android.DaggerApplication;
11+
import dagger.android.support.AndroidSupportInjectionModule;
812
import iammert.com.dagger_android_injection.AndroidSampleApp;
913

1014
/**
1115
* Created by mertsimsek on 25/05/2017.
1216
*/
17+
@Singleton
1318
@Component(modules = {
14-
AndroidInjectionModule.class,
19+
AndroidSupportInjectionModule.class,
1520
AppModule.class,
1621
ActivityBuilder.class})
17-
public interface AppComponent {
22+
public interface AppComponent extends AndroidInjector<DaggerApplication> {
23+
24+
void inject(AndroidSampleApp app);
25+
26+
@Override
27+
void inject(DaggerApplication instance);
1828

1929
@Component.Builder
2030
interface Builder {
21-
@BindsInstance Builder application(Application application);
31+
@BindsInstance
32+
Builder application(Application application);
2233
AppComponent build();
2334
}
24-
25-
void inject(AndroidSampleApp app);
2635
}

app/src/main/java/iammert/com/dagger_android_injection/di/AppModule.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,16 @@
33
import android.app.Application;
44
import android.content.Context;
55

6-
import javax.inject.Singleton;
7-
6+
import dagger.Binds;
87
import dagger.Module;
9-
import dagger.Provides;
108

119
/**
1210
* Created by mertsimsek on 25/05/2017.
1311
*/
1412
@Module
15-
public class AppModule {
13+
public abstract class AppModule {
1614

17-
@Provides
18-
@Singleton
19-
Context provideContext(Application application) {
20-
return application;
21-
}
15+
@Binds
16+
abstract Context provideContext(Application application);
2217

2318
}
Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,25 @@
11
package iammert.com.dagger_android_injection.ui.detail;
22

33
import android.os.Bundle;
4-
import android.support.annotation.Nullable;
5-
import android.support.v4.app.Fragment;
6-
import android.support.v7.app.AppCompatActivity;
74
import android.util.Log;
85

96
import javax.inject.Inject;
107

11-
import dagger.android.AndroidInjection;
12-
import dagger.android.AndroidInjector;
13-
import dagger.android.DispatchingAndroidInjector;
14-
import dagger.android.support.HasSupportFragmentInjector;
8+
import dagger.android.support.DaggerAppCompatActivity;
159
import iammert.com.dagger_android_injection.R;
1610
import iammert.com.dagger_android_injection.ui.detail.fragment.DetailFragment;
1711

1812
/**
1913
* Created by mertsimsek on 25/05/2017.
2014
*/
2115

22-
public class DetailActivity extends AppCompatActivity implements HasSupportFragmentInjector, DetailView {
23-
24-
@Inject
25-
DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector;
16+
public class DetailActivity extends DaggerAppCompatActivity implements DetailView {
2617

2718
@Inject
2819
DetailPresenter detailPresenter;
2920

3021
@Override
3122
protected void onCreate(Bundle savedInstanceState) {
32-
AndroidInjection.inject(this);
3323
super.onCreate(savedInstanceState);
3424
setContentView(R.layout.activity_detail);
3525
detailPresenter.loadDetail();
@@ -46,8 +36,4 @@ public void onDetailLoaded() {
4636
Log.v("TEST", "Detail is loaded");
4737
}
4838

49-
@Override
50-
public AndroidInjector<Fragment> supportFragmentInjector() {
51-
return fragmentDispatchingAndroidInjector;
52-
}
5339
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package iammert.com.dagger_android_injection.ui.detail;
22

3+
import dagger.Binds;
34
import dagger.Module;
45
import dagger.Provides;
56
import iammert.com.dagger_android_injection.data.ApiService;
@@ -8,15 +9,13 @@
89
* Created by mertsimsek on 30/05/2017.
910
*/
1011
@Module
11-
public class DetailActivityModule {
12+
public abstract class DetailActivityModule {
1213

1314
@Provides
14-
DetailView provideDetailView(DetailActivity detailActivity) {
15-
return detailActivity;
16-
}
17-
18-
@Provides
19-
DetailPresenter provideDetailPresenter(DetailView detailView, ApiService apiService) {
15+
static DetailPresenter provideDetailPresenter(DetailView detailView, ApiService apiService) {
2016
return new DetailPresenterImpl(detailView, apiService);
2117
}
18+
19+
@Binds
20+
abstract DetailView provideDetailView(DetailActivity detailActivity);
2221
}

app/src/main/java/iammert/com/dagger_android_injection/ui/detail/fragment/DetailFragment.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,20 @@
33
import android.content.Context;
44
import android.os.Bundle;
55
import android.support.annotation.Nullable;
6-
import android.support.v4.app.Fragment;
76
import android.util.Log;
87
import android.view.LayoutInflater;
98
import android.view.View;
109
import android.view.ViewGroup;
1110

1211
import javax.inject.Inject;
1312

14-
import dagger.android.support.AndroidSupportInjection;
13+
import dagger.android.support.DaggerFragment;
1514

1615
/**
1716
* Created by mertsimsek on 02/06/2017.
1817
*/
1918

20-
public class DetailFragment extends Fragment implements DetailFragmentView {
19+
public class DetailFragment extends DaggerFragment implements DetailFragmentView {
2120

2221
@Inject
2322
DetailFragmentPresenter detailFragmentPresenter;
@@ -37,7 +36,6 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
3736

3837
@Override
3938
public void onAttach(Context context) {
40-
AndroidSupportInjection.inject(this);
4139
super.onAttach(context);
4240
}
4341

app/src/main/java/iammert/com/dagger_android_injection/ui/detail/fragment/DetailFragmentModule.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package iammert.com.dagger_android_injection.ui.detail.fragment;
22

3-
import dagger.Binds;
43
import dagger.Module;
54
import dagger.Provides;
65

app/src/main/java/iammert/com/dagger_android_injection/ui/main/MainActivity.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
package iammert.com.dagger_android_injection.ui.main;
22

33
import android.content.Intent;
4-
import android.support.v7.app.AppCompatActivity;
54
import android.os.Bundle;
65
import android.util.Log;
76
import android.view.View;
87

98
import javax.inject.Inject;
109

11-
import dagger.android.AndroidInjection;
10+
import dagger.android.support.DaggerAppCompatActivity;
1211
import iammert.com.dagger_android_injection.R;
1312
import iammert.com.dagger_android_injection.ui.detail.DetailActivity;
1413

15-
public class MainActivity extends AppCompatActivity implements MainView{
14+
public class MainActivity extends DaggerAppCompatActivity implements MainView {
1615

1716
@Inject
1817
MainPresenter mainPresenter;
1918

2019
@Override
2120
protected void onCreate(Bundle savedInstanceState) {
22-
AndroidInjection.inject(this);
21+
2322
super.onCreate(savedInstanceState);
2423
setContentView(R.layout.activity_main);
2524
mainPresenter.loadMain();
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package iammert.com.dagger_android_injection.ui.main;
22

3+
import dagger.Binds;
34
import dagger.Module;
45
import dagger.Provides;
56
import iammert.com.dagger_android_injection.data.ApiService;
@@ -8,15 +9,13 @@
89
* Created by mertsimsek on 25/05/2017.
910
*/
1011
@Module
11-
public class MainActivityModule {
12+
public abstract class MainActivityModule {
1213

1314
@Provides
14-
MainView provideMainView(MainActivity mainActivity){
15-
return mainActivity;
16-
}
17-
18-
@Provides
19-
MainPresenter provideMainPresenter(MainView mainView, ApiService apiService){
15+
static MainPresenter provideMainPresenter(MainView mainView, ApiService apiService) {
2016
return new MainPresenterImpl(mainView, apiService);
2117
}
18+
19+
@Binds
20+
abstract MainView provideMainView(MainActivity mainActivity);
2221
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.0.0-alpha4'
10+
classpath 'com.android.tools.build:gradle:3.0.0'
1111

1212
// NOTE: Do not place your application dependencies here; they belong
1313
// in the individual module build.gradle files
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Wed Jun 28 17:54:12 EEST 2017
1+
#Fri Nov 03 15:44:43 IST 2017
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-rc-1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

0 commit comments

Comments
 (0)