Skip to content

Commit 3e30a34

Browse files
committed
1. Реализовать ApplicationComponent и связать с FragmentProducerComponent и FragmentReceiverComponent для передачи ApplicationContext
1 parent 5f136fa commit 3e30a34

File tree

8 files changed

+103
-3
lines changed

8 files changed

+103
-3
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
android:roundIcon="@mipmap/ic_launcher_round"
1111
android:supportsRtl="true"
1212
android:theme="@style/Theme.DaggerHomework">
13-
<activity android:name=".MainActivity">
13+
<activity android:name=".MainActivity"
14+
android:exported="true">
1415
<intent-filter>
1516
<action android:name="android.intent.action.MAIN" />
1617

app/src/main/java/ru/otus/daggerhomework/App.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,14 @@ package ru.otus.daggerhomework
33
import android.app.Application
44

55
class App :Application() {
6+
lateinit var appCompoment: ApplicationComponent
7+
override fun onCreate() {
8+
super.onCreate()
9+
appCompoment = DaggerApplicationComponent.factory().newAppComponent(applicationContext)
10+
}
11+
12+
}
13+
14+
fun Application.asApp(): App {
15+
return this as App
616
}
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
11
package ru.otus.daggerhomework
22

3+
import android.content.Context
4+
import dagger.BindsInstance
5+
import dagger.Component
6+
import javax.inject.Qualifier
7+
8+
@Component
39
interface ApplicationComponent {
4-
}
10+
11+
@ApplicationContext
12+
fun provideContext(): Context
13+
14+
@Component.Factory
15+
interface Factory{
16+
17+
fun newAppComponent(@ApplicationContext @BindsInstance context: Context): ApplicationComponent
18+
}
19+
}
20+
21+
@Qualifier
22+
annotation class ApplicationContext
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package ru.otus.daggerhomework
2+
3+
import dagger.Component
4+
import javax.inject.Singleton
5+
6+
@Singleton
7+
@Component(
8+
modules = [FragmentProducerModule::class],
9+
dependencies = [ApplicationComponent::class]
10+
)
11+
interface FragmentProducerComponent {
12+
13+
companion object {
14+
fun getFragmentProducerComponent(applicationComponent: ApplicationComponent): FragmentProducerComponent {
15+
return DaggerFragmentProducerComponent.builder()
16+
.applicationComponent(applicationComponent).build()
17+
}
18+
}
19+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package ru.otus.daggerhomework
2+
3+
import android.content.Context
4+
import dagger.Module
5+
import dagger.Provides
6+
7+
@Module
8+
interface FragmentProducerModule {
9+
companion object{
10+
11+
@Provides
12+
fun provideContext(@ApplicationContext context: Context): Context{
13+
return context
14+
}
15+
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package ru.otus.daggerhomework
2+
3+
import dagger.Component
4+
5+
@Component(
6+
modules = [FragmentReceiverModule::class],
7+
dependencies = [ApplicationComponent::class]
8+
)
9+
interface FragmentReceiverComponent {
10+
11+
companion object {
12+
fun getFragmentReceiverComponent(applicationComponent: ApplicationComponent): FragmentReceiverComponent {
13+
return DaggerFragmentReceiverComponent.builder()
14+
.applicationComponent(applicationComponent).build()
15+
}
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package ru.otus.daggerhomework
2+
3+
import android.content.Context
4+
import dagger.Module
5+
import dagger.Provides
6+
7+
@Module
8+
interface FragmentReceiverModule {
9+
companion object{
10+
11+
@Provides
12+
fun provideContext(@ApplicationContext context: Context): Context{
13+
return context
14+
}
15+
16+
}
17+
}

app/src/main/java/ru/otus/daggerhomework/ViewModelReceiver.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package ru.otus.daggerhomework
33
import android.app.Application
44
import android.content.Context
55
import android.widget.Toast
6+
import javax.inject.Inject
67

7-
class ViewModelReceiver(
8+
class ViewModelReceiver @Inject constructor(
89
private val context: Context
910
) {
1011

0 commit comments

Comments
 (0)