我有一种情况,应该将一个类注入到我的recyclerview中。为了注入我的匕首类,我需要掌握上下文。所以我在recyclerview类中编写了以下代码
Components.<DepComponent>getFrom(parent.getContext()).inject(this);
在DepComponent
内,我有一个注入方法,其中还添加了此特定的回收站视图
运行代码时出现此错误
android.view.ContextThemeWrapper cannot be cast to target.dagger.HasComponent
我尝试投射(Activity)parent.getContext()
,但抛出以下错误
android.view.ContextThemeWrapper cannot be cast to Activity
有关如何解决此问题的任何建议?看起来parent.getContext()返回的是ContextThemeWrapper
,它没有被强制转换为活动
答案 0 :(得分:1)
您可以使用以下方法从上下文获取活动,或者如果它不是基于Activity的上下文,则抛出异常:
private fun getActivity(context: Context): Activity {
return when (context) {
is Activity -> context
is ContextWrapper -> getActivity(context.getBaseContext())
else -> error("Non Activity based context")
}
}
像这样:
Components.<DepComponent>getFrom(getActivity(context)).inject(this);