diff --git a/app/build.gradle b/app/build.gradle index 705d0941..3d8a120e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,16 +1,16 @@ plugins { id 'com.android.application' - id 'kotlin-android' - id 'kotlin-kapt' + id 'org.jetbrains.kotlin.android' + id 'org.jetbrains.kotlin.kapt' } android { - compileSdkVersion 31 + compileSdkVersion 34 defaultConfig { applicationId "ru.otus.daggerhomework" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 34 versionCode 1 versionName "1.0" @@ -30,6 +30,7 @@ android { kotlinOptions { jvmTarget = '1.8' } + namespace 'ru.otus.daggerhomework' } dependencies { @@ -38,6 +39,11 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' - implementation 'com.google.dagger:dagger:2.42' - kapt 'com.google.dagger:dagger-compiler:2.42' + implementation 'com.google.dagger:dagger:2.48' + kapt 'com.google.dagger:dagger-compiler:2.48' + + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2' + implementation 'androidx.fragment:fragment-ktx:1.6.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe328c68..2e03fe41 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:android="http://schemas.android.com/apk/res/android"> - + android:theme="@style/Theme.DaggerHomework" + android:name=".di.app.App"> + diff --git a/app/src/main/java/ru/otus/daggerhomework/App.kt b/app/src/main/java/ru/otus/daggerhomework/App.kt deleted file mode 100644 index de363626..00000000 --- a/app/src/main/java/ru/otus/daggerhomework/App.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.otus.daggerhomework - -import android.app.Application - -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..e8220a37 100644 --- a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt +++ b/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt @@ -2,8 +2,8 @@ package ru.otus.daggerhomework import android.graphics.Color import androidx.annotation.ColorInt -import androidx.annotation.ColorRes -import java.util.* +import java.util.Random +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/ru/otus/daggerhomework/FragmentProducer.kt index 00dd10dc..81abf84b 100644 --- a/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt +++ b/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt @@ -1,26 +1,54 @@ package ru.otus.daggerhomework +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 ru.otus.daggerhomework.di.activity.ActivityComponentHolder +import ru.otus.daggerhomework.di.app.appComponent +import ru.otus.daggerhomework.di.fragments.DaggerFragmentProducerComponent +import javax.inject.Inject class FragmentProducer : Fragment() { + @Inject + lateinit var viewModel: ViewModelProducer2 + + override fun onAttach(context: Context) { + super.onAttach(context) + DaggerFragmentProducerComponent + .builder() + .setActivityComponent( + ActivityComponentHolder + .getActivityComponent( + context.appComponent, + requireActivity() + ) + ) + .build() + .inject(this) + } + 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 onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) view.findViewById