问题描述
我有这段代码,在单击适配器中的viewHolder项时显示对话框片段
SpecialRequestNotFoundBottomSheetDialog {
requestItem?.specialRequestEntity?.id?.let { id -> onCancelReasonsSelected(id,it) }
}.show(itemView.context as AppCompatActivity).supportFragmentManager)
最近我正在迁移到Hilt,并且遇到了类强制转换异常,看起来像Hilt包裹了上下文,但我无法获取父 Activity 来获取所需的 FragmentManager >显示对话框
解决方法
通过检查Context类型并获取BaseContext,我可能找到了解决此崩溃的方法。这是我现在正在使用的。我不知道击键是否有更好的方法。
private fun activityContext(): Context? {
val context = itemView.context
return if (context is ViewComponentManager.FragmentContextWrapper) {
context.baseContext
} else context
}
,
我阅读了源代码,找到了此解决方案FragmentComponentManager.findActivity(view.context) as Activity