项目主要架构是一个Activity 切换多个fragment 需要切换语言的部分全在Fragment布局中
/**
* 切换语言
*
* @param locale
* @param first 用于区分是否是选择切换还是获取本地缓存
*/
public void switchLanguage(Locale locale, boolean first) {
Resources resources = getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();
configuration.setLocale(locale);
createConfigurationContext(configuration);
resources.updateConfiguration(configuration, metrics);
if (!first) {
ActivityCompat.recreate(this);//重新创建activity
}
}
//使用
String l = AndroidUtils.QuickDataGet("language", "1", this);//获取本地缓存
Constants.language = Integer.parseInt(l);
switchLanguage(Constants.language == 1 ? Locale.SIMPLIFIED_CHINESE :
Locale.ENGLISH, true);
//切换处保存本地缓存
switchLanguage(Constants.language == 1 ? Locale.SIMPLIFIED_CHINESE :
Locale.ENGLISH, false);