Articles of кинжал.андроида

Является ли хорошей практикой использовать @Inject для Android Fragment на Dagger2?

Я использую @ContributesAndroidInjector of Dagger 2.11. Он работает без проблем со следующими источниками. @ActivityScope также работает. class MainActivity : AppCompatActivity(), HasFragmentInjector { @Inject lateinit var androidInjector: DispatchingAndroidInjector<Fragment> override fun fragmentInjector() = androidInjector @Inject lateinit var fragment: MainFragment @Inject lateinit var viewModel: MainViewModel override fun onCreate(savedInstanceState: Bundle?) { AndroidInjection.inject(this) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) fragmentManager.beginTransaction() .replace(R.id.container, fragment) .commitAllowingStateLoss() viewModel.start("activity") […]

android.support.v4.app.FragmentManager не может быть предоставлен без @ Provides- или @ Produces-аннотированного метода

Так что я совершенно новичок в кинжале и стараюсь «подрывать» проект Kotlin MVP с активностью, а также независимыми фрагментами и независимой навигацией. Тот факт, что я использую хорошие несколько просмотров, основанных на фрагменте поддержки lib, заставил меня попробовать последние возможности поддержки андроида кинжалом. После некоторого борется с построением графа Compononent, я столкнулся с проблемой, которая […]

Проблема с компиляцией Dagger2 в Котлине

Я пытаюсь изучить инъекцию зависимости, используя Dagger2. Я создал несколько пользовательских областей и Qualifier. Я создал компонент приложения, где я хотел бы ввести определенные глобальные зависимости, а также создал компонент Activity, который будет возвращать определенные экземпляры на основе контекста активности. Теперь, когда я пытаюсь ввести глобальные экземпляры в Activity, я получаю ошибку следующим образом: e: […]

Ввод не работает со вторым конструктором

для моего текущего проекта я использую Kotlin и Dagger 2. Я хочу встраивать зависимости во вторичный конструктор, но конструктор никогда не инициализируется. class SelectionFragmentModel ():ViewModel(){ lateinit var channelInfosRepository: ChannelInfosRepository @Inject constructor(channelInfosRepository: ChannelInfosRepository) : this(){ this.channelInfosRepository = channelInfosRepository } … } В качестве обходного пути я сейчас впрыскиваю в первичный конструктор, но это не оптимально. class […]

Не удалось проанализировать: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: ошибка при обработке аннотации

Я изучаю жизненный цикл кинжала, поддерживающий андроид, для инъекционной зависимости в Котлине, но они всегда не могут генерировать код зависимости кинжала. Ошибка, произошедшая с сообщением об отказе, приведена ниже: public abstract interface MainComponent { ^ java.lang.IllegalStateException: failed to analyze: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing Здесь он привязан к MainComponent.kt @Singleton @Component(modules = arrayOf(AndroidSupportInjectionModule::class,AndroidInjectionModule::class,AppModule::class, NetworkModule::class, ActivityBuilder::class)) […]

Dagger2 – FragmentSubcomponentBuilder не реализует AndroidInjector.Factory

Я использую кинжал 2 и пытаюсь перевести свой Android-проект с Java на Kotlin. После успешной сборки я получаю ошибку времени выполнения: MyFragmentSubcomponentBuilder не реализует AndroidInjector.Factory С Java эта ошибка не появилась. А также я заметил, что в моем модуле ActivityBuilder все методы не используются после сборки (они должны использоваться в генерируемых классах подкомпонентов). @Module abstract […]

Как вводить издевательства с кинжалом 2.11

Я пытаюсь вводить насмешки с помощью Android Injector of Dagger 2.11. Перед использованием Android Inject я использовал для изменения инжектора в классе Application, чтобы я мог вводить mocks. Как это: class EGOApplication : Application() { lateinit var injectorComponent: InjectorComponent override fun onCreate() { super.onCreate() injectorComponent = DaggerInjectorComponent.builder() .appModule(AppModule(this)) .build() } И в моих тестах я […]

Вложить только определенные параметры в конструктор

У меня есть ведущий class PhonePresenter @Inject constructor( private val preference: DataPreference, private val ioScheduler: Scheduler = Schedulers.io()) ioScheduler – это параметр по умолчанию. Я хочу preference: DataPreference только preference: DataPreference . Теперь у меня есть исключение [dagger.android.AndroidInjector.inject(T)] io.reactivex.Scheduler cannot be provided without an @Provides-annotated method. Есть ли способ определить параметры, которые я хочу вставить […]

Kapt, Kotlin, Dagger2 Ошибка при обработке аннотации

Я получаю эту ошибку градиента после добавления com.google.dagger: зависимость от кинжала-андроида в проекте с kotlin. Это часть моего построения gradle build.gradle apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'realm-android' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'kotlin-kapt' android { … kapt { generateStubs = true } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { […]