科特林匕首2.11
我试图注入Dagger 2.11 Retrofit in Fragment,但是我不能注入,
1)问题是AndroidInjection.inject(this)需要DaggerFragment,我不能将BaseFragment更改为DaggerFragment对象,因为它会导致问题,而替换片段
2)我也有点混淆匕首的架构,因为我已经看过很多匕首2.11或以上的演示代码,他们正在为每个活动创建模块。 所以我需要为每个活动创建单独的模块和组件
open class BaseFragment : Fragment() class HomeFragment : BaseFragment() { @Inject lateinit var retrofit: Retrofit override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun onAttach(context: Context?) { AndroidInjection.inject(activity) super.onAttach(context) } override fun onAttach(activity: Activity?) { AndroidInjection.inject(this) super.onAttach(activity) } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View { println("----Retrofit----"+retrofit.baseUrl()) return inflater!!.inflate(R.layout.fragment_home, container, false) } }
您可以使用AndroidSupportInjection.inject(this)而不是AndroidInjection.inject(activity)在OnAttach方法的片段中。
现在应该看起来像
override fun onAttach(context: Context?) { AndroidSupportInjection.inject(this) super.onAttach(context) }
- 什么是KTX(Kotlin扩展库),为什么它在Android开发中越来越受欢迎
- Kotlin – 如何将null值传入片段newInstance方法?
- lateinitVar无法解析使用从Kotlin 1.2.10 isInitialized
- 在kotlin中设置UserDefaultsKeys(swift)
- Android工作室3.0.1:执行失败的任务’应用程序:processDebugGoogleServices’
- Android Studio:“执行失败的任务”:app:mergeDebugResources’“
- 如何访问CalendarProvider与房间?
- 在另一个模块的function模块中找不到Kotlin类
- Kotlin Android扩展缓存合成属性还是每次调用findViewById()?