解决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

错误信息

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 activity.
        at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:696)
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:552)
        at androidx.appcompat.app.AppCompatDialog.setContentView(AppCompatDialog.java:95)
        at androidx.appcompat.app.AlertController.installContent(AlertController.java:232)
        at androidx.appcompat.app.AlertDialog.onCreate(AlertDialog.java:279)
        at android.app.Dialog.dispatchOnCreate(Dialog.java:407)
        at android.app.Dialog.show(Dialog.java:302)
        at com.adojayfan.rntest.utils.UiTools.showAlertDialog(UiTools.java:266)
        at com.adojayfan.rntest.MainActivity$MyWebChromeClient.onJsConfirm(MainActivity.java:116)
        at com.tencent.smtt.sdk.f.onJsConfirm(SmttWebChromeClient.java:149)
        at com.tencent.tbs.core.webkit.tencent.TencentWebChromeClient.onJsConfirm(TbsJavaCore:159)
        at android.webview.chromium.WebViewContentsClientAdapter.handleJsConfirm(TbsJavaCore:889)
        at org.chromium.android_webview.AwContentsClientBridge$4.run(TbsJavaCore:260)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6823)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

解决方式

  1. 首先查看当前Activity的主题。如果Activity继承的是AppCompatActivity,那么主题必须继承自Theme.AppCompat。
<activity
            android:name=".MainActivity"
            android:configChanges="orientation|screenSize"
            android:hardwareAccelerated="true"
            android:theme="@style/Theme.AppCompat.Light">
  1. 如果确定Activity的主题没问题,那可能是因为使用Dialog时传入的Context不对。
    Dialog需要的Context不能使用getApplicationContext()。
//错误
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
//正确
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
相关文章
|
数据安全/隐私保护 Android开发
Android bundetool 转换 .aab 为apk 步骤
Android bundetool 转换 .aab 为apk 步骤
1909 0
Android bundetool 转换 .aab 为apk 步骤
|
Java Maven Android开发
Android 阿里云镜像整理
Android 阿里云镜像整理
8755 0
|
开发工具 Android开发
细说 AppCompat 主题引发的坑:You need to use a Theme.AppCompat theme with this activity!
细说 AppCompat 主题引发的坑:You need to use a Theme.AppCompat theme with this activity!
细说 AppCompat 主题引发的坑:You need to use a Theme.AppCompat theme with this activity!
|
Dart 开发工具 Android开发
快速集成 Flutter Shorebird 热更新
Flutter Shorebird 是一种云端代码推送服务,可以让开发者在几分钟内集成,无需修改代码即可将更新推送到任何 Dart 代码,支持所有 Android 和 iOS 设备,并符合 App Store 和 Play Store 的规定。Shorebird 最大的优点是无代码侵入,快速集成,设计优秀。
1279 2
快速集成 Flutter Shorebird 热更新
|
Android开发 开发者 Kotlin
Android 多进程情况下判断应用是否处于前台或者后台
本文介绍在多进程环境下判断Android应用前后台状态的方法。通过`ActivityManager`和服务信息`RunningAppProcessInfo`可有效检测应用状态,优化资源使用。提供Kotlin代码示例,帮助开发者轻松集成。
1614 8
|
消息中间件 小程序 Java
暹罗点餐开源啦,一款java多门店点餐系统-连锁门店如蜜雪冰城瑞幸咖啡
暹罗点餐是一款Java餐饮点餐系统,适用于多门店的连锁品牌,对标蜜雪冰城、瑞幸咖啡。系统包含用户端、商家端、配送端以及总管理后台; * 前端使用uni-app开发,可打包部署到微信小程序、APP、H5 * Web端使用vue + Element开发 * 服务端使用java语言开发,技术栈:Spring Boot + Redis + RocketMQ + WebSocket + ElasticSearch + ELK + SpringBoot Admin
1722 1
暹罗点餐开源啦,一款java多门店点餐系统-连锁门店如蜜雪冰城瑞幸咖啡
Sublime Text 16进制显示
Sublime Text 16进制显示
1401 0
|
Android开发
Android 解决CocosCreator 真机调试闪退问题
Android 解决CocosCreator 真机调试闪退问题
624 0
Android 解决CocosCreator 真机调试闪退问题
|
Java Android开发 开发者
Android Studio 中 R.java 没了,转为 R.txt 文件!
Android Studio 中 R.java 没了,转为 R.txt 文件!
1051 1
|
消息中间件 缓存 安全
android开发,使用kotlin学习消息机制Handler
android开发,使用kotlin学习消息机制Handler
676 0