Почему AdnroidInjector.inject (фрагмент) использует устаревший android.support.v4.app.Fragment - PullRequest
0 голосов
/ 20 декабря 2018

Я использую Dagger2 для DI в приложении для Android,

Я хочу добавить viewModel во фрагмент AndroidInjector и иметь две строки:

 AndroidInjection.inject(this)
 viewModel = ViewModelProviders.of(this, viewModelFactory).get(ProductDetailViewModel::class.java)

Когда мой фрагмент расширяетсяandroidx.fragment.app.Fragment показывает эту ошибку:

  • первая строка использует устаревший android.support.v4.app.Fragment
  • , а вторая использует android.app.Fragment

сейчас я незнаю, что мой фрагмент должен быть расширен!

Я получаю эту ошибку, когда выбираю один из них:

None of the following functions can be called with the arguments supplied: public open fun inject(activity: Activity!): Unit defined in dagger.android.AndroidInjection public open fun inject(fragment: Fragment!): Unit defined in dagger.android.AndroidInjection public open fun inject(service: Service!): Unit defined in dagger.android.AndroidInjection public open fun inject(contentProvider: ContentProvider!): Unit defined in dagger.android.AndroidInjection

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Моя ошибка заключалась в использовании dagger-android (не dagger-android-support), а dagger-android просто имеет:

 AndroidInjection.inject(this)

, но я должен использовать

 AndroidSupportInjection.inject(this)

, то естьв supportLibrary версии dagger-android с именем dagger-android-support

0 голосов
/ 26 декабря 2018

Google представил нам AndroidX, и для того, чтобы все разработчики на одной странице делали Фрагмент устаревшим, а Фрагмент поддержки - частью AndroidX. Поэтому вам необходимо поддерживать фрагмент для того же самого с AnroidX, который входит в состав Jetpack ....

https://developer.android.com/jetpack/androidx/

0 голосов
/ 20 декабря 2018

androidx - это рефакторированное пространство имен библиотеки.

AndroidX - это значительное улучшение оригинальной библиотеки поддержки Android.Как и библиотека поддержки, AndroidX поставляется отдельно от ОС Android и обеспечивает обратную совместимость между версиями Android.AndroidX полностью заменяет библиотеку поддержки, предоставляя функции четности и новые библиотеки. см. Здесь

, поэтому я советую вам сначала перенести код на androidx.Для этого выполните следующие действия.

Refactor> мигрируйте на Androidx.

и слава вам больше не конфликтует с библиотечной версией.

...