diff --git a/app/build.gradle b/app/build.gradle index 705d0941..9ea1f757 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,12 +5,12 @@ plugins { } android { - compileSdkVersion 31 + compileSdkVersion 32 defaultConfig { applicationId "ru.otus.daggerhomework" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 32 versionCode 1 versionName "1.0" @@ -35,9 +35,14 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.6.0' - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'com.google.android.material:material:1.6.1' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.0-rc02' + implementation 'androidx.fragment:fragment-ktx:1.4.1' + implementation 'com.google.dagger:dagger:2.42' kapt 'com.google.dagger:dagger-compiler:2.42' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe328c68..95620b67 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,16 +1,18 @@ - + + - + android:theme="@style/Theme.Flow" > + diff --git a/app/src/main/java/otus/homework/dagger/App.kt b/app/src/main/java/otus/homework/dagger/App.kt new file mode 100644 index 00000000..d296bd2e --- /dev/null +++ b/app/src/main/java/otus/homework/dagger/App.kt @@ -0,0 +1,16 @@ +package otus.homework.dagger + +import android.app.Application +import otus.homework.dagger.di.* + +class App : Application() { + + lateinit var appComponent: AppComponent + + override fun onCreate() { + super.onCreate() + appComponent = DaggerAppComponent + .factory() + .create(applicationContext) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt b/app/src/main/java/otus/homework/dagger/ColorGenerator.kt similarity index 72% rename from app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt rename to app/src/main/java/otus/homework/dagger/ColorGenerator.kt index a9e25a27..85a372d1 100644 --- a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt +++ b/app/src/main/java/otus/homework/dagger/ColorGenerator.kt @@ -1,9 +1,9 @@ -package ru.otus.daggerhomework +package otus.homework.dagger import android.graphics.Color import androidx.annotation.ColorInt -import androidx.annotation.ColorRes import java.util.* +import javax.inject.Inject interface ColorGenerator { @@ -11,7 +11,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/otus/homework/dagger/FragmentProducer.kt similarity index 51% rename from app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt rename to app/src/main/java/otus/homework/dagger/FragmentProducer.kt index 00dd10dc..c71c1826 100644 --- a/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt +++ b/app/src/main/java/otus/homework/dagger/FragmentProducer.kt @@ -1,14 +1,22 @@ -package ru.otus.daggerhomework +package otus.homework.dagger +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import otus.homework.dagger.di.DaggerFragmentProducerComponent +import javax.inject.Inject class FragmentProducer : Fragment() { + @Inject + lateinit var viewModelFactory: VMFactoryProducer + private val viewModel: ViewModelProducer by viewModels { viewModelFactory } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -20,7 +28,15 @@ class FragmentProducer : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) view.findViewById