Java 为什么应用程序语言只能更改一次?

Java 为什么应用程序语言只能更改一次?,java,android,Java,Android,我正在尝试改变基于Java的Android中的应用程序语言。 这就是功能: public void setLocale(String lang) { Locale locale = new Locale(lang); Configuration config = new Configuration(); Locale.setDefault(locale); config.locale = locale; getBaseContext().getR

我正在尝试改变基于Java的Android中的应用程序语言。 这就是功能:

public void setLocale(String lang) {
    Locale locale = new Locale(lang);
    Configuration config = new Configuration();
    
    Locale.setDefault(locale);
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, null);
    finish();
    startActivity(getIntent());
}
此函数来自另一个问题,如“如何更改应用程序语言”,但它只工作一次(例如从英语到希伯来语)。 这不是一个复杂的问题

你能帮我吗?

用这个函数替换你的函数:

public void setLocale(String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale); // changes the languages
    Resources resources = getBaseContext().getResources();
    Configuration config = resources.getConfiguration();
    config.setLocale(locale);
    resources.updateConfiguration(config, resources.getDisplayMetrics());
    this.recreate(); // re-launches the app
}

用以下函数替换您的函数:

public void setLocale(String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale); // changes the languages
    Resources resources = getBaseContext().getResources();
    Configuration config = resources.getConfiguration();
    config.setLocale(locale);
    resources.updateConfiguration(config, resources.getDisplayMetrics());
    this.recreate(); // re-launches the app
}

这回答了你的问题吗?更改语言并将languageValue设置为布尔类型的true。现在每次活动午餐时都检查languageValue。@LeoPelozo这不是重复的,因为我这样做的方式(如您链接的问题的答案)对应用程序有效,但对100%的应用程序无效。这是否回答了您的问题?更改语言并将languageValues设置为true,这是布尔类型。现在每次活动午餐时都要检查languageValue。@LeoPelozo这不是重复的,因为我这样做的方式(如您链接的问题的答案)对应用程序起作用,但不是100%起作用