首页 > 解决方案 > 系统应用程序中的 ClassCastException ContentFrameLayout androidx 与 support.v7

问题描述

奇怪的异常当我FrameLayout在我的SampleActivity.

Caused by: java.lang.ClassCastException: androidx.appcompat.widget.ContentFrameLayout cannot be cast to android.support.v7.widget.ContentFrameLayout
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:685)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:516)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:464)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at com.sample.SampleActivity.onCreate(SampleActivity.java:98)

所以我在AppCompatDelegateImpl这里查看了现在的源代码:AppCompatDelegateImpl

进口SampleActivity.java

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

虽然这个类是 android 的一部分,appcompat.v7但在内部它正在导入androidx.appcompat.widget.ContentFrameLayout它是否暗示 appcompat.v7 在内部使用 androidx 依赖项?如果是,那么为什么我会收到此异常?

注意:请避免提供基于 gradle 的解决方案,因为它是一个系统应用程序。

标签: androidandroid-sourceandroidx

解决方案


修复是在Android.mk文件中包含 androidx 依赖项。

还必须按照 Android 开发人员网站中的建议将所有支持库类的导入更改为 androidx:https ://developer.android.com/jetpack/androidx/migrate


推荐阅读