从内存中清除应用程序并重新打开时,应用程序资源未更新

时间:2019-06-23 08:52:36

标签: android localization

我试图在运行时更改应用程序本地化,使其正常运行,但是当从内存中清除应用程序并再次将其重新打开时,我发现诸如strings.xml和styles.xml之类的资源采用默认的移动语言!

1 个答案:

答案 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中。并保留语言环境,直到清除/卸载应用程序数据。