Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

插件使用宿主资源

Open chenlin139 opened this issue 3 years ago • 2 comments

插件中想要通过xml使用宿主中的自定义view,通过白名单方式配置了这个类,由于view包含了宿主中的资源layout_label_view。会导致插件加载这个view报错。请问有什么好的方式实现吗?

Caused by: android.view.InflateException: Binary XML file line #8 in com.example.myapplication:layout/layout_label_view: Binary XML file line #8 in com.example.myapplication:layout/layout_label_view: Error inflating class TextView Caused by: android.view.InflateException: Binary XML file line #8 in com.example.myapplication:layout/layout_label_view: Error inflating class TextView Caused by: java.lang.UnsupportedOperationException: Can't convert to ComplexColor: type=0x1 at android.content.res.ResourcesImpl.loadComplexColorForCookie(ResourcesImpl.java:1239) at android.content.res.ResourcesImpl.loadComplexColorFromName(ResourcesImpl.java:1115) at android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:1194) at android.content.res.Resources.loadColorStateList(Resources.java:1150) at android.content.res.TypedArray.getColorStateList(TypedArray.java:599) at android.widget.TextView.readTextAppearance(TextView.java:4025) at android.widget.TextView.(TextView.java:1101) at android.widget.TextView.(TextView.java:1005) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:87) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:83) at android.support.v7.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:177) at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:102) at android.support.v7.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266) at android.support.v7.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:253) at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1120) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1050) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1014) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1193) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1154) at android.view.LayoutInflater.inflate(LayoutInflater.java:696) at android.view.LayoutInflater.inflate(LayoutInflater.java:548) at android.view.LayoutInflater.inflate(LayoutInflater.java:495) at com.example.gametest.game.LabelView.init(LabelView.java:53) at com.example.gametest.game.LabelView.(LabelView.java:31) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:871) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1063) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1014) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1193) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1154) at android.view.LayoutInflater.inflate(LayoutInflater.java:696) at android.view.LayoutInflater.inflate(LayoutInflater.java:548) at android.view.LayoutInflater.inflate(LayoutInflater.java:495) 2022-07-04 16:02:50.787 7207-7207/com.example.myapplication E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.example.testplugin.MainActivity.onCreate(MainActivity.java:19) at com.tencent.shadow.core.loader.delegates.ShadowActivityDelegate.onCreate(Unknown Source:352) at com.tencent.shadow.core.runtime.container.PluginContainerActivity.onCreate(PluginContainerActivity.java:84) at android.app.Activity.performCreate(Activity.java:7894) at android.app.Activity.performCreate(Activity.java:7883) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1353) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3655) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3835) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2291) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:230) at android.app.ActivityThread.main(ActivityThread.java:8024) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:526) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)

chenlin139 avatar Jun 04 '22 08:06 chenlin139

我记得demo中的处理方法是,宿主创建View对象实例,传递给插件 插件使用代码动态add到布局中

Daimhim avatar Jun 06 '22 01:06 Daimhim

我记得demo中的处理方法是,宿主创建View对象实例,传递给插件 插件使用代码动态add到布局中

如果要动态修改view的一些属性,通过findViewById找不到这个view,另外在插件中动态修改资源也不行

chenlin139 avatar Jun 06 '22 01:06 chenlin139