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

时间:2012-09-25 12:39:07

标签: android android-activity locale

  

可能重复:
  Change app language programmatically in 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.
    }
}

1 个答案:

答案 0 :(得分:1)

1)退出应用程序和重启之间你可以保存这样的选择: 创建应用程序类

public class MutawaApplication extends Application {

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

android:name=".MyApplication"

在此类中使用SharedCreferences的onCreate读取语言。在app中更改lang时将其保存到SharedPreferences。

2)在您的活动中检查onResume上的区域设置,如果需要make replaceContentView()