Updated 28 January 2019
In this blog, we will implement the dagger 2 dependency injection and before we start we will take a look at annotation type which we are going to use in this blog.
Add dependency in your buid.gradle:
1 2 3 4 5 6 |
dependencies { implementation 'com.google.dagger:dagger-android:2.11' // dagger library implementation 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' annotationProcessor 'com.google.dagger:dagger-compiler:2.11' //for code generation } |
1-AppModule.class
AppModule class will be used to provide this reference. We will define a method annotated with @Provides @Singleton that informs Dagger that this method is the constructor for the String return type ( it is the method in charge of providing the instance of the String).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Module class AppModule { private Context mContext; AppModule(Context mContext){ this.mContext=mContext;} @Singleton @Provides public String getPackageName(){ return mContext.packageName; } } |
2-AppComponent.class
In AppComponent class where we define the class where we will inject the modules it’s basically the bridge between Module and the class which injecting the module.
1 2 3 4 5 |
@Singleton @Component(modules = {AppModule.class}) interface AppComponent { public inject(MainActivity mainActivity); } |
Build your project, In your MainActivity class to inject the dependency add @Inject annotation on the String object.
1 2 3 4 5 6 7 8 9 10 |
public class MyActivity extends Activity { @Inject String mPackageName; public void onCreate(Bundle savedInstance) { // assign singleton instances to fields// DaggerAppComponent.builder().AppModule(this).inject(this); Log.d("PackageName","======>"+mPackageName); } } |
I hope it will help you to give the basic idea of how it will make your project component reusable and inject dependency of the object whenever it required by class.
If you have more details or questions, you can reply to the received confirmation email.
Back to Home
Be the first to comment.