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

这是我第一次根据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 去掉,同样可以正常运行。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

snow-yeti

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

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

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

打赏作者

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

抵扣说明:

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

余额充值