Я изучаю Dagger2 и пытаюсь создать очень глупый пример (Mainactivity должен создать экземпляр класса Car).
И я должен справиться с этой ошибкой. Приложение не поддерживает кинжал. android .HasAndroidInjector
, если я правильно понял:
- мой компонент должен быть аннотирован @ Component и должен ссылаться на мой модуль @ Module (с некоторыми аннотированными методами @ Provides )
- Мне нужно использовать lateinit var для создания экземпляра моего класса и использовать аннотацию @ Inject.
Где я потерпел неудачу?
My MainActivity:
class MainActivity : DaggerAppCompatActivity() {
@Inject
lateinit var car: Car
public var brand: String = "Peugeot"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
DaggerAppComponent.builder().application(application).buildAppComponent()
car.name = brand
Log.e("CarText", "onCreate: ${car.name}")
}
My AppComponent
@Component(
modules = arrayOf(AppModule::class)
)
public interface AppComponent : AndroidInjector<AppComponent>{
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun buildAppComponent(): AppComponent
}
My AppModule
@Module
class AppModule {
companion object{
@Provides
fun createCar(): Car {
return Car("")
}
}
}
и до конца sh класс моей машины
data class Car(var name: String)