我使用的是第三方库,它有一些自定义视图实现。在实现中,它们调用Utils.showSoftKeyboard(context as Activity)
。这一点,沿着使用片段作为@AndroidEntryPoint,导致以下异常:java.lang.ClassCastException: dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper cannot be cast to android.app.Activity
的值。“
是否有任何方法可以在不更改第三方库的情况下修复此问题?
4条答案
按热度按时间busg9geu1#
如果第三方库有一个问题跟踪器,最好提出这个问题。不能保证
View
的context
是Activity
:自定义视图或任何祖先中的android:theme
属性也很容易导致同样的问题。如果您没有在片段中填充任何
@AndroidEntryPoint
视图,则可以通过直接从Activity上下文获取LayoutInflater
来解决此问题。字符串
ttygqcqt2#
如果没有Hilt权限,我们可以访问父活动,如下所示
(context as ContextWrapper).baseContext
fivyi3re3#
对于你的问题来说可能已经晚了,但这里有一个解决方案,可能会帮助其他有同样问题的人。
字符串
this答案
vxqlmq5t4#
基于Nitrodon的回答,我找到了解决方案。我使用了视图绑定的Hilt,我的代码看起来像:
字符串
我不得不做:
型
我还使用viewModel Provider填充了我的viewModel,这是一个崩溃(没有init<>方法),然后我使用了
by viewModels()
。