diff --git a/app/build.gradle b/app/build.gradle index 705d0941..74ef9ea5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,4 +40,6 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation 'com.google.dagger:dagger:2.42' kapt 'com.google.dagger:dagger-compiler:2.42' + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1" } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe328c68..45b42152 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,16 +1,18 @@ - - + diff --git a/app/src/main/java/ru/otus/daggerhomework/App.kt b/app/src/main/java/ru/otus/daggerhomework/App.kt index de363626..588ed707 100644 --- a/app/src/main/java/ru/otus/daggerhomework/App.kt +++ b/app/src/main/java/ru/otus/daggerhomework/App.kt @@ -1,6 +1,18 @@ package ru.otus.daggerhomework import android.app.Application +import ru.otus.daggerhomework.di.ApplicationComponent +import ru.otus.daggerhomework.di.DaggerApplicationComponent + + +class App : Application() { + + lateinit var appComponent: ApplicationComponent + private set + + override fun onCreate() { + super.onCreate() + appComponent = DaggerApplicationComponent.factory().create(this) + } -class App :Application() { } \ No newline at end of file diff --git a/app/src/main/java/ru/otus/daggerhomework/ApplicationComponent.kt b/app/src/main/java/ru/otus/daggerhomework/ApplicationComponent.kt deleted file mode 100644 index fc47f256..00000000 --- a/app/src/main/java/ru/otus/daggerhomework/ApplicationComponent.kt +++ /dev/null @@ -1,4 +0,0 @@ -package ru.otus.daggerhomework - -interface ApplicationComponent { -} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt b/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt index a9e25a27..f0ca940b 100644 --- a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt +++ b/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt @@ -4,6 +4,7 @@ import android.graphics.Color import androidx.annotation.ColorInt import androidx.annotation.ColorRes import java.util.* +import javax.inject.Inject interface ColorGenerator { @@ -11,7 +12,7 @@ interface ColorGenerator { fun generateColor(): Int } -class ColorGeneratorImpl : ColorGenerator { +class ColorGeneratorImpl @Inject constructor() : ColorGenerator { override fun generateColor(): Int { val rnd = Random() diff --git a/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt b/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt index 00dd10dc..96c03a57 100644 --- a/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt +++ b/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt @@ -6,21 +6,42 @@ import android.view.View import android.view.ViewGroup import android.widget.Button import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import ru.otus.daggerhomework.di.DaggerFragmentProducerComponent +import ru.otus.daggerhomework.di.FragmentProducerComponent +import javax.inject.Inject class FragmentProducer : Fragment() { + @Inject + lateinit var viewModelFactory: ViewModelProducer.Factory + + private val viewModelProducer by lazy { + ViewModelProvider(this, viewModelFactory)[ViewModelProducer::class.java] + } + + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - return inflater.inflate(R.layout.fragment_a, container, true) + return inflater.inflate(R.layout.fragment_a, container, false) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val fragmentProducerComponent = DaggerFragmentProducerComponent.factory() + .create((requireActivity() as MainActivity).mainActivityComponent) + fragmentProducerComponent.inject(this) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - view.findViewById