科特林匕首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) }