【Android初级】You need to use a Theme.AppCompat theme (or descendant) with this activity解决办法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

这是我第一次根据Android官网指导写的APP,链接如下:

Start Another Activity

每一步都严格参照了官网指导,一步一步敲代码、运行,结果报了如下错误:

10-08 18:08:40.878 18503 18503 E AndroidRuntime: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at com.huawei.anrdemo.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:13)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:7372)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
10-08 18:08:40.878 18503 18503 E AndroidRuntime:        ... 9 more

本地环境: Android Studio 3.0.1版本,APP 的 Gradle version是4.1,Android Plugin Version是3.0.1,Compile SDK Version是API 26,Min SDK Version是21,Target SDK Version是API 26,其余参数都是默认。

首先,这个问题我没有Google,也没有去百度查,只从其报错上思考了下,意思是说你的这个activity需要使用一个Theme.AppCompat主题或descendant(没有去查这个descendant是什么意思)

既然不懂descendant是什么意思,那姑且就尝试下 Theme.AppCompat 吧

由于官网定义的这个 DisplayMessageActivity 继承的是 AppCompatActivity,然后我就尝试在 AndroidManifest.xml 里面将 DisplayMessageActivity 的定义增加了一个属性 android:theme="@style/Theme.AppCompat",重新运行后果然成功。于是自己得出这个结论:

如果 activity 继承的是 AppCompatActivity,那么它在 AndroidManifest.xml 里面需要设置一个 Theme.AppCompat 主题

那如果 activity 不继承 AppCompatActivity 呢,然后我又把 DisplayMessageActivity 的定义改成了 extends Activity,并把AndroidManifest里面的 Theme.AppCompat 去掉,同样可以正常运行。

奇怪的是,明明按照官网一步一步敲的代码,为什么官网没有指出这里的问题?

如果知道这个原因的大神,还请留言讨论,谢谢。

细说 AppCompat 主题引发的坑:You need to use a Theme.AppCompat theme with this activity 一般来说按照文档的建议去做,出现问题的概率很低。但很多人的情况不同,每每会发生意外状况,就比如这次没有使用 AppCompat 主题引发的坑! AppCompat 框架作为 Jetpack 集合的基石,非常重要。Android Studio 上创建的默认项目都会自动集成 AppCompat 框架,并采用其提供的 AppCompatActivity 作为 Activity Base。 App 侧给 Activity 配置的主题一般扩展自 SDK 提供的系统主题或 AppCompat 提供的主题,前者的话.. 阅读详情

相关推荐

我的Android进阶之旅------>解决错误:You need to use a Theme.AppCompat theme (or descendant) with this activity.

1、错误描述今天,想实现Activity不显示标题栏的效果,在项目的AndroidManifest.xml文件,对相应的Activity添加属性 android:theme="@android:style/Theme.NoTitleBar"具体代码如下:

字节卷动 6万+

You need to use a Theme.AppCompat theme (or descendant) with this activity

You need to use a Theme.AppCompat theme (or descendant) with this activity.

little_monkey_92的博客 2万+

【我的Android进阶之旅】解决bug:You need to use a Theme.AppCompat theme (or descendant) with this activity.

当继承AppCompatActivity时,如果设置了自定义主题,会出现"需要使用Theme.AppCompat主题"的运行时错误。这是因为AppCompatActivity要求使用兼容包主题。解决方法有两种:1)修改Activity继承自原生Activity类而非AppCompatActivity;2)将自定义主题改为继承Theme.AppCompat或其子主题。示例中通过将DefaultPromptActivity改为继承Activity解决了该问题。这个错误常见于使用Android

字节卷动 3835

You need to use a Theme.AppCompat theme (or descendant) with this activity. 完美解决

先看一条错误信息:Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. android Studio在执行新建项目时出现此错误,出现此错误的原因就是: Activty继承自android.support.v7...

lizhong 7万+

You need to use a Theme.AppCompat theme (or descendant) with this activity.

说明你的 Activity 正在使用需要支持库主题(如。)的组件,但你没有为它指定基于。

xueyoubangbang的博客 2667

解决 You need to use a Theme.AppCompat theme (or descendant) with this activity

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 两种解决办法: 1、在创建的activity时,如果不需要继承AppCompatActivity的话,就直接继承Activity。 2、如果必须要继承AppCompatActivity的话,我们看另一种办法: 将AndroidManifest.xml文件中关于Activ

DerMing_You的博客 7030

解决You need to use a Theme.AppCompat theme (or descendant) with this activity

错误信息 2019-07-24 15:35:40.385 18490-18490/com.adojayfan.rntest E/AndroidRuntime: FATAL EXCEPTION: main Process: com.adojayfan.rntest, PID: 18490 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activ

adojayfan的博客 1万+

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with

异常信息 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 异常分析 异常的意思是:你需要使用一个 theme.appcompat 主题(或后代)与此活动。为什么会有这种情况出现,是因为 Activity 继承的是 AppCo...

大脸猫的博客 9803

报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.

报错:You need to use a Theme.AppCompat theme (or descendant) with this activity. 学习 Activity 生命周期时希望通过 Dialog 主题测试 onPause() 和 onStop() 的区别,点击按钮跳转 Activity 时报错: 复制代码 E/AndroidRuntime: FATAL EXCEPTION: m...

mleage的博客 676

动态加载插件报错You need to use a Theme.AppCompat theme (or descendant) with this activity.

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sf.DarkCalculator, PID: 13063 ...

sinat_35958166的博客 889

解决AndroidYou need to use a Theme.AppCompat theme (or descendant) with this activity.

刚学Android,写个通过点击按钮打开个对话框活动,上来就遇到了个异常崩溃的问题,好家伙。。。 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 查了一通资料,总结下来原因就是: Activty继承自android.support.v7.app.AppCompatActivty,而不是android.app.Activty。 但是官方的资

FussyCat的博客 2892

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this a

问题解决 报这个错的原因是activity继承了兼容包的类,比如ActionBarActivity,它来自android.support.v7.app.ActionBarActivity 方法一:把继承兼容包的类改为直接继承Activity 方法二 : 配合的AppCompattheme使用 在AndroidManifest.xml加上 android:theme="@style/T...

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1万+

[debug]You need to use a Theme.AppCompat theme (or descendant) with this activity.

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 问题描述及原因 为Activity添加透明主题android:theme="@android:style/Theme.Translucent", 报错java.lang.Illega...

mtyn2015的博客 166
上一篇: 【Android初级】什么是ANR?如何防止?如何修复?
下一篇: 【Android初级】如何在UIAutomator中使用Context访问String资源
snow-yeti
博客等级 码龄9年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snow-yeti

你的打赏将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值