我有一个应用程序,它有一个处理切换片段的活动
public void replaceFragment(@IdRes int containerViewId,
@NonNull Fragment fragment,
@NonNull String fragmentTag
) {
getSupportFragmentManager()
.beginTransaction()
.replace(containerViewId, fragment, fragmentTag)
.commitNow();
}
在主活动中有一个语言切换。
我的文件夹中有两个字符串文件strings.xml values和values-fr
英语和法语
现在当我切换时,我这样做
Locale locale = new Locale(languageCode);
Locale.setDefault(locale);
Resources resources = activity.getResources();
Configuration config = resources.getConfiguration();
config.setLocale(locale);
resources.updateConfiguration(config, resources.getDisplayMetrics());
activity.recreate()
该活动会更改语言和第一个片段,但不会更改其他片段
请任何人都可以帮助。我的targetSdkVersion是31
1条答案
按热度按时间cbjzeqam1#
啊是的这是Android配置设置的烦恼.出于某种原因,更改这样的配置需要您在每个Activity上执行此操作。想要根据您自己的应用设置更改为黑暗模式?必须对每个Activity执行操作。
一个经典的规避方法是创建一个基类来完成所有的获取首选项和设置首选项sutff,并从这个类扩展所有其他类。
有时候这样做可能不适合你的需要,但就我上次检查的情况而言,每个活动都必须在 * 通常 * onResume重载方法上设置prefs。