科特林匕首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) }
- 为什么这个Kotlin扩展失败Android Studio Lint检查?
- Android:将数据发送回MainActivity
- com.android.builder.dexing.DexArchiveMergerException:无法在运行时合并dexexception
- 如何在android中的kotlin读取和写入txt文件
- url在三星设备中没有加载
- java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull
- 对Json TypeToken的EmptyClassBlock皮棉投诉
- Android Gradle 3.0和本地库的“Unresolved reference R”
- 检测到非捆绑插件覆盖的未知特征(Facet )