diff --git a/projects/sdk/dynamic/dynamic-apk/src/main/java/com/tencent/shadow/dynamic/apk/ChangeApkContextWrapper.java b/projects/sdk/dynamic/dynamic-apk/src/main/java/com/tencent/shadow/dynamic/apk/ChangeApkContextWrapper.java index deb1153aa..b69d86751 100644 --- a/projects/sdk/dynamic/dynamic-apk/src/main/java/com/tencent/shadow/dynamic/apk/ChangeApkContextWrapper.java +++ b/projects/sdk/dynamic/dynamic-apk/src/main/java/com/tencent/shadow/dynamic/apk/ChangeApkContextWrapper.java @@ -18,6 +18,8 @@ package com.tencent.shadow.dynamic.apk; +import static android.content.pm.PackageManager.GET_META_DATA; + import android.content.Context; import android.content.ContextWrapper; import android.content.pm.PackageInfo; @@ -26,8 +28,6 @@ import android.content.res.Resources; import android.view.LayoutInflater; -import static android.content.pm.PackageManager.GET_META_DATA; - /** * 修改Context的apk路径的Wrapper。可将原Context的Resource和ClassLoader重新修改为新的Apk。 */ @@ -39,6 +39,8 @@ public class ChangeApkContextWrapper extends ContextWrapper { final private ClassLoader mClassloader; + private Resources.Theme mTheme; + public ChangeApkContextWrapper(Context base, String apkPath, ClassLoader mClassloader) { super(base); this.mClassloader = mClassloader; @@ -70,7 +72,16 @@ public Resources getResources() { @Override public Resources.Theme getTheme() { - return mResources.newTheme(); + // 模仿android.view.ContextThemeWrapper#initializeTheme + if (mTheme == null) { + Resources.Theme newTheme = mResources.newTheme(); + final Resources.Theme theme = getBaseContext().getTheme(); + if (theme != null) { + newTheme.setTo(theme); + } + mTheme = newTheme; + } + return mTheme; } @Override