ClassCastException ContentFrameLayout androidx 与系统应用程序中的 support.v7
ClassCastException ContentFrameLayout androidx vs. support.v7 in system app
我在 SampleActivity
.
中仅使用 FrameLayout
时出现系统应用程序异常异常
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;
虽然这个 class 是 android 的一部分 appcompat.v7
但它在内部导入 androidx.appcompat.widget.ContentFrameLayout
这是否意味着 appcompat.v7 在内部使用 androidx依赖关系?如果是,那为什么我会收到此异常?
注意:请避免给出基于gradle的解决方案,因为它是一个系统应用程序。
更新您的导入报表。您使用的 class 具有相同的名称但来自不同的包。
转到gradle.properties文件并确保
android.useAndroidX=false
如果您将此设置为 true,android 插件将使用 AndroidX 库而不是支持库。此外,如果您无法在 gradle.properties 中找到 useAndroidX,请尝试添加它并执行 gradle 同步。
修复是在 Android.mk
文件中包含 androidx 依赖项。
还必须按照 Android 开发者网站中的建议将支持库 类 的所有导入更改为 androidx:https://developer.android.com/jetpack/androidx/migrate
我在 SampleActivity
.
FrameLayout
时出现系统应用程序异常异常
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;
虽然这个 class 是 android 的一部分 appcompat.v7
但它在内部导入 androidx.appcompat.widget.ContentFrameLayout
这是否意味着 appcompat.v7 在内部使用 androidx依赖关系?如果是,那为什么我会收到此异常?
注意:请避免给出基于gradle的解决方案,因为它是一个系统应用程序。
更新您的导入报表。您使用的 class 具有相同的名称但来自不同的包。
转到gradle.properties文件并确保
android.useAndroidX=false
如果您将此设置为 true,android 插件将使用 AndroidX 库而不是支持库。此外,如果您无法在 gradle.properties 中找到 useAndroidX,请尝试添加它并执行 gradle 同步。
修复是在 Android.mk
文件中包含 androidx 依赖项。
还必须按照 Android 开发者网站中的建议将支持库 类 的所有导入更改为 androidx:https://developer.android.com/jetpack/androidx/migrate