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

在实现动态加载apk的过程中遇到错误:'You need to use a Theme.AppCompat theme (or descendant) with this activity'。尽管DynamicActivity已继承Activity,错误依然存在。通过排查发现,问题源于在application标签中错误地设置了主题。解决方案是在每个宿主activity中单独设置Theme.AppCompat,而非在application级别。但这并非长久之计,未来需找到根本解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.sf.DarkCalculator, PID: 13063
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sf.DarkCalculator/androidx.pluginmgr.DynamicActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
                                                                           at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                           at android.os.Looper.loop(Looper.java:164)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6938)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
                                                                        Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                           at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:359)
                                                                           at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328)
                                                                           at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289)
                                                                           at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                           at com.example.gbt.recorder.AudioRecorderActivity.onCreate(AudioRecorderActivity.java:105)
                                                                           at android.app.Activity.performCreate(Activity.java:7174)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
                                                                           at androidx.pluginmgr.delegate.DelegateInstrumentation.callActivityOnCreate(DelegateInstrumentation.java:240)
                                                                           at androidx.pluginmgr.environment.PluginInstrumentation.callActivityOnCreate(PluginInstrumentation.java:153)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030) 
                                                                           at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:105) 
                                                                           at android.os.Looper.loop(Looper.java:164) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6938) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

动态加载apk框架使用大神动态加载原理,导入module之后,框架使用方法需要在宿主apk的xml文件中注册框架的DynamicActivity,拉起插件apk时报以上错误,搜索之后提示说需要把activity继承的AppCompatActivity改为Activity,但是我的DynamicActivity本身就是继承的Activity,尝试了各种办法均不行以后,发现

宿主apk中在application中

android:theme="@style/AppTheme"

于是去掉application中的这一句,分别在每个宿主的activity中单独添加,问题解决。

但不是根本方法,后续需要从根本解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值