android - dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper 无法转换为 android.app.Activity

标签 android kotlin dagger-hilt

我正在使用具有一些自定义 View 实现的第三方库。在实现中,他们调用 Utils.showSoftKeyboard(context as Activity) .这与将 fragment 用作 @AndroidEntryPoint 一起导致以下异常:java.lang.ClassCastException: dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper cannot be cast to android.app.Activity .
有没有办法在不改变第三方库的情况下解决这个问题?

最佳答案

如果第三方库有问题跟踪器,最好提出有关此问题的问题。不保证 contextViewActivity :android:theme 很容易引起同样的问题。自定义 View 或任何祖先中的属性。
如果你不充气 @AndroidEntryPoint fragment 中的 View ,您可以通过获取 LayoutInflater 来解决此问题直接来自 Activity 上下文。

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val baseInflater = LayoutInflater.from(requireActivity()) // NOT context
        // ...
    }

关于android - dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper 无法转换为 android.app.Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64341415/

相关文章:

android - 同一订阅者上多次注册调用是否会导致多个事件调用?

android - AlertDialog 不显示两个按钮

java - 如何在 Activity 午餐开始时停止观察 liveData?

java - 如何在 Kotlin 中访问 LiveData 列表“Livedata<List<Model>>”的元素?

android - SwipeToDismiss 在带有动画的 LazyColumn 内

android - Google Play 控制台中的 Dagger Hilt 崩溃

android - 无法将 android-support-v7-appcompat 连接到我的项目

android - 任务 ':app:kaptDebugKotlin' 执行失败 - 使用 Hilt 时发生错误

android - 为什么Hilt和Dagger需要注入(inject)Activity和Fragment?

android - 如何从服务器缓存音频、视频和图像并保存在内存中?