我刚刚升级了我的应用程序,使用新发布的v22.1.0 AppCompat,我现在在打开应用程序时遇到以下异常.

Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
        at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)

我怎么才能修好它呢?

推荐答案

AppCompat现在对主题窗口标志的要求更加严格,与您从框架中获得的内容更加匹配.

这背后的主要原因是为了支持AppCompatDialogs,这也是我们在此版本中添加的.它们大量使用windowNoTitle标志,而AppCompat以前并不太注意这一点.

因此,要解决您的问题,您有两个 Select :

简单的方法是只使用Theme.AppCompat.NoActionBar作为你的父主题.这样做总是对的.

如果您不能做到这一点(也许您需要支持操作栏和不支持操作栏),您应该执行以下操作:

<style name="MyTheme" parent="Theme.AppCompat">
    ...
</style>

<style name="MyTheme.NoActionBar">
    <!-- Both of these are needed -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

你现在应该回到正轨了.

Android相关问答推荐

如何在cordova 中播放html5视频标签?

Android使用参数编写齐射后请求

用于小部件泄漏警告的伙伴对象中的Kotlin Lateinit

如何将两个变量传递给Nav主机,然后将其传递给另一个屏幕?

两首合成曲的喷气背包动画

Jetpack编写错误(java.lang.NoSuchMethodError:无接口方法startRestartGroup)

在Android中使用Room从SQlite数据库中获取实体列表的正确方式是什么?

Jetpack Compose:根据盒子中的最大视图固定宽度和高度

未解析的引用:视图模型

是什么导致调用 Firebase 服务器?

在 Android 房间迁移中获取上下文

我该怎么做文本计时器

在事件中使用 Context/Toast 时不需要的重组 - Jetpack Compose

在 Jetpack Compose 中清除列表时可组合不重组

LazyColumn 单选中的状态提升. Jetpack compose

如何在 BottomBar jetpack compose 中删除选定的椭圆项目 colored颜色

如何在 compose 中使用 BottomSheetScaffold 为底页设置半展开高度?

为什么我不能直接记住 mutableStateOf 可组合函数?

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

单个用户可以在 Firebase 身份验证中将多个电话号码链接到他的帐户吗?