动态添加的模块可能未能正确加载其资源。确保使用正确的资源ID,并更改调用资源的方式以便首先从动态模块中获取资源。
示例代码:
//获取动态模块中的资源 private fun getDynamicModuleResource(context: Context, packageName: String, resId: Int): Resources?{ try { val assetManager = context.packageManager.getResourcesForApplication(packageName).assets val resources = Resources(assetManager, context.resources.displayMetrics, context.resources.configuration) return resources.openRawResource(resId) } catch (e: Exception) { e.printStackTrace() } return null }
//从动态模块获取资源 fun getDynamicModuleDrawable(context: Context, packageName: String, resId: Int): Drawable?{ try { val resources = getDynamicModuleResource(context, packageName, resId) ?: return null return ResourcesCompat.getDrawable(resources, resId, null) } catch (e: Exception) { e.printStackTrace() } return null }
//调用动态模块的资源 val drawable = getDynamicModuleDrawable(context, packageName, R.drawable.dynamic_drawable) ?: return imageView.setImageDrawable(drawable)