Я хочу внедрить привязку данных к активности с помощью Dagger 2. У меня проблема с ним. Я не понимаю, что не так.
ОШИБКА
cannot access DataBindingComponent class file for androidx.databinding.DataBindingComponent not found
И мой код:
MainActivity.kt
class MainActivity : AppCompatActivity() {
@Inject lateinit var bindingUtil: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
val stepperContainer = (applicationContext as StepperApplication).stepperContainer
stepperContainer.inject(this)
super.onCreate(savedInstanceState)
}
}
StepperApplication.kt
class StepperApplication : Application() {
val stepperContainer by lazy {
DaggerStepperComponent.builder().context(ContextModule(applicationContext)).build()
}
override fun onCreate() {
super.onCreate()
}
}
StepperComponent.kt
@Singleton
@Component (modules = [ContextModule::class])
interface StepperComponent {
fun inject(activity: MainActivity)
}
ContextModule. kt
@Module
class ContextModule (var context: Context) {
@Singleton
@Provides
fun context() : Context {
return context
}
}
ActivityMainModule.kt
@Module (subcomponents = [ActivityMainComponent::class])
class ActivityMainModule (var activity: MainActivity) {
@Provides
fun activityMainBinding(activity: MainActivity) : ActivityMainBinding {
return DataBindingUtil.setContentView(activity, R.layout.activity_main)
}
}
ActivityMainComponent.kt
@Subcomponent
interface ActivityMainComponent {
@Subcomponent.Builder
interface Builder {
fun activityMain(activity: MainActivity) : Builder
fun build() : ActivityMainComponent
}
}
Gradle
implementation 'com.google.dagger:dagger:2.25.2'
kapt 'com.google.dagger:dagger-compiler:2.25.2'
activity_main. xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
В чем проблема и как ее решить ?