我正在使用具有一些自定义 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
.
有没有办法在不改变第三方库的情况下解决这个问题?
最佳答案
如果第三方库有问题跟踪器,最好提出有关此问题的问题。不保证 context
的 View
是 Activity
: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/