在Android应用程序中以编程方式更改语言

4

可能是重复问题:
如何在Android中以编程方式更改应用程序语言

我想在我的SettingsActivity.java中立即更改所有活动的语言。
并且无论系统语言环境如何,都保存此选择(即使我退出应用程序或重新启动手机)。
我该怎么做?

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) { 
        switch (pos) {
        case 0:
            Locale locale = new Locale("en");
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext()
                    .getResources().getDisplayMetrics());
            break;

        case 1: 
            Locale locale2 = new Locale("de");
            Locale.setDefault(locale2);
            Configuration config2 = new Configuration();
            config2.locale = locale2;
            getBaseContext().getResources().updateConfiguration(config2, getBaseContext()
                    .getResources().getDisplayMetrics()); 
            break;          
        }       
    }

    public void onNothingSelected(AdapterView<?> parent) {
      // Do nothing.
    }
}

你的问题是什么?语言没有改变吗? - Hardik Joshi
更改不会立即应用。 - user1680782
Android 不支持默认的运行时语言切换,因此在每次配置更改时,您都必须手动重置区域设置。请参考 https://dev59.com/nHE85IYBdhLWcg3wMAfc。 - Dennis Jaamann
1个回答

2

1) 在退出应用程序和重新启动之间,您可以像这样保存选择: 创建 Application 类

public class MutawaApplication extends Application {

在AndroidManifest.xml中注册它。 (http://developer.android.com/reference/android/app/Application.html)
android:name=".MyApplication"

在这个类中,在onCreate中从SharedPreferences读取语言。当您在应用程序中更改语言时,请将其保存到SharedPreferences中。
2)在您的活动中,在onResume中检查区域设置,如果需要,请进行replaceContentView()。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接