-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
主题报错 #10
Comments
|
很抱歉那么久才回复你,我一直在找原因,我把你的项目clone下来是可以运行的,设置主题也是生效的,但是我把你的项目模块化集成到我的项目中后设置主题好像没有生效,不知道是什么原因,其中StubActivity中的主题是可以生效的,但是继承AppCompatActivity的StubAppCompatActivity的主题好像没有生效 还是报错View class com.google.android.material.button.MaterialButton is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant). 如果不用com.google.android.material.button.MaterialButton 这个控件也是可以正常运行的 我验证了修改代码主题
这里是运行了的 这是什么原因你知道吗 这是详细报错
|
你可以仔细看看, 插件apk工程中的代码 插件Activity 需要继承自BaseActivity, 插件中的上下文context需要从插件apk中 获取 Resources 的 你是在自己的代码中使用的吧? |
9cf161786aa1cb383cc4a1db493f88b8.mp4 |
我没有改动你的代码,只是把你的项目作为模块化导入我的项目了,他确实是以插件化运行的, |
你需要修改一下插件工程中的代码 hostAppClazz = Class.forName("com.malin.hook.MApplication") 把"com.malin.hook.MApplication" 改成你的宿主工程中自定义的Application的全路径名称. "com.malin.hook.MApplication" 这个类全称来自于demo的宿主工程 |
呃,我觉得我还没那种小白到那种程度😥 |
我好像找到原因了,就是你的项目中反射设置主题好像没有生效,反射设置的主题是宿主自身的主题,而不是插件的主题,然而在插件中我们又用的是插件中的资源,在你的项目中我反编译看了打包后的源码,可以看出插件和宿主两个的style是一样的资源id,所以我们在宿主中反射设置插件的主题,刚好巧合的对上了插件自生的主题样式id,这样在插件中 LayoutInflater.from(mContext).inflate(R.layout.plugin_activity, null)也不会报错 我注释掉设置主题那一段后,还是报错,我不知道主题样式是在什么时机被加载的,后面你插件中的反射设置theme好像也没有生效。。 我也不知都我说的对不对 |
找到了问题所在了,还是资源问题,插件中加载了宿主的类,但是资源又是插件自身的,主要还是插件的类和宿主的类的资源id不一样, |
抱歉, 最近一直很忙, 没有时间看github上你的留言.
Demo工程里的代码, 是不是也有这种问题呢? 你可以在你的fork项目里, 改一下, 提交一下代码, 我学习一下. |
我也没有解决😭😭😭 主要是我的项目引入了很多包,as编译后,资源id就对不上了,像你的那个简单的例子的话宿主和插件资源id就是一样的,然后就能正常找到, |
勉强解决问题 目前使用的是通过资源合并方式 好像高版本才行 |
@liu1352183717 刚看到, 你还在研究呀, 好有毅力! |
你好!我在使用你的库集成到我的项目时报错View class com.google.android.material.button.MaterialButton is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
这个是什么原因呢,在你的项目中没有报错,我也看了是反射修改了主题,但是我集成后就报这个错误,我的项目是33的版本的,1+8pro手机
The text was updated successfully, but these errors were encountered: