我试图在运行时更改应用程序本地化,使其正常运行,但是当从内存中清除应用程序并再次将其重新打开时,我发现诸如strings.xml和styles.xml之类的资源采用默认的移动语言!
答案 0 :(得分:0)
请参阅我的本地化应用程序方法:
我创建了一个如下的抽象类:
public abstract class BaseLocalization extends AppCompatActivity {
SharedPreferences preferences;
Constants constants;
String currentLocale = "en";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
constants = new Constants();
preferences = getSharedPreferences(constants.getPreferences(), MODE_PRIVATE);
currentLocale = preferences.getString(constants.getLocale(), "en");
setLocale(currentLocale);
}
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
}
这样做之后,我使所有扩展AppCompatActivity
的类都扩展了该类。并将语言环境保存在SharedPreferences
中。并保留语言环境,直到清除/卸载应用程序数据。