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

https://blog.csdn.net/jyw935478490/article/details/72868751

按照官网写的第一个APP,出现了You need to use a Theme.AppCompat theme (or descendant) with this activity问题

2018年10月08日 19:10:08 Xia_Leon 阅读数:173
 
版权声明:文章版权归作者所有,转载请务必注明出处。 https://blog.csdn.net/Xia_Leon/article/details/82972154

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

Start Another Activity

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

  1.  
    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.
  2.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:354)
  3.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323)
  4.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
  5.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
  6.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at com.huawei.anrdemo.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:13)
  7.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7372)
  8.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
  9.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
  10.  
    10-08 18:08:40.878 18503 18503 E AndroidRuntime: ... 9 more
  11.  
     

本地环境: 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 去掉,同样可以正常运行。

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

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

You need to use a Theme.AppCompat theme (or descendant) with this activity问题的更多相关文章

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

    学习 Activity 生命周期时希望通过 Dialog 主题测试 onPause() 和 onStop() 的区别,点击按钮跳转 Activity 时报错: E/AndroidRuntime: FA ...

  2. Android 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 ...

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

    报错如下:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test2/com.exampl ...

  4. You need to use a Theme.AppCompat theme

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dji.sdk.sample/com.dji.sdk.sa ...

  5. java.lang.IllegalStateException: 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 t ...

  6. 关于新版SDK报错You need to use a Theme.AppCompat theme的两种解决办法

    android的一个小问题: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme ( ...

  7. Android Studio:You need to use a Theme.AppCompat theme (or descendant) with this activity. AlertDialog

    学习<第一行代码>的时候遇到的问题. Process: com.example.sevenun.littledemo, PID: 2085 java.lang.RuntimeExcepti ...

  8. 开发中遇到的问题(一)——java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

    1.错误描述: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) wit ...

  9. java.lang.IllegalStateException: You need to use a Theme.AppCompat theme

    配置: 中设置theme为 <application android:allowBackup="true" android:icon="@mipmap/ic_lau ...

  10. Android Studio: 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 ...

随机推荐

  1. java内存模型—先行发生原则

    Java语言中有一个“先行发生”(happens-before)的原则.这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据,依赖这个原则,我们可以通过几条规则一揽子解决并发环境下两个操 ...

  2. Java Thread系列(一)线程创建

    Java Thread系列(一)线程创建 Java 中创建线程主要有三种方式:继承 Thread.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实 ...

  3. java 内存 线程 类 vm分析工具

    JMeter.Jconsole.JVMStat

  4. Jenkins执行selenium报错unknown error: cannot find Chrome binary

    问题描述:在Pycharm中执行selenium测试用例,可以正常运行, 集成在Jenkins中,构建时,发现构建成功,但是查看Console Output,报错:unknown error: can ...

  5. 前端福利之HTML5 UTF-8 中文乱码(转)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. javascript编码规范[原创]

    一些命名规范书或js书命名规范章节,喜欢将命名规范跟语法混在一块例如: 1.使用“var”定义.初始化变量防止产生全局变量,多变量一块定义使用“,”(本身这种方式就很有争议). 2.结尾必加“;”防止 ...

  7. 用 Servlet 进行上载的原理和实现

    Servlet 是用 Java 编写的.协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案.使用 Servlet 可以方便地处理在 HTML 页面表单中提 ...

  8. [转载]关于JAVA中子类和父类的构造方法

    原文链接:https://www.cnblogs.com/chenpi/p/5486096.html#_label0

  9. zabbix监控cpu jumps

    cpu监控图形分为三种 cpu jumps cpu突发 包含 context switches per second 进程线程切换 interrupts per second 每秒的中断次数 cpu ...

  10. 简单的ListView中item图片异步加载

    前言:     在android开发当中,从目标地址获取图片往往都是采用异步加载的方法.当完全加载完图片后在进行显示,也有些是直接将加载的图片一点一点的显示出来. 这两个区别只是对流的处理不同而已.现 ...