android 改变手机内外语言环境的问题?

应用程序名字,能跟着我们软件中指定的环境走,而不受手机本身的语言环境影响

设置好默认的语言,比如locale,需要重载函数onConfigurationChanged,这个函数在系统语言改变的时候会被调用,在函数里把语言设置成默认的,这样就不会随系统改变了:

private Locale locale = new Locale("en"); 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
       super.onConfigurationChanged(newConfig); 
      if (locale != null) { 
      newConfig.locale = locale; Locale.setDefault(locale); 
      getBaseContext().getResources().updateConfiguration(newConfig,  getBaseContext().getResources().getDisplayMetrics()); 
} 
} 

 

oncreate函数也要判断下,因为语言改变的情况下,会重启正在活动的activity,同样道理也要设置回去。

public void onCreate() { 
        super.onCreate();  
        SharedPreferences settings = 
           PreferenceManager.getDefaultSharedPreferences(this);  
        Configuration config = getBaseContext().getResource().getConfiguration();  
          String lang = settings.getString(getString
                  (R.string.pref_locale), ""); 
  if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang){ 
        locale = new Locale(lang); 
        Locale.setDefault(locale); 
         config.locale = locale; 
      getBaseContext().getResources().updateConfiguration(config,   
    getBaseContext().getResources().getDisplayMetrics()); 
    } 
} 

 

在androidmanifest.xml中,activity的属性设置:

android:configChanges="locale"

转自http://www.dewen.org/question/1974/android+%E6%94%B9%E5%8F%98%E6%89%8B%E6%9C%BA%E5%86%85%E5%A4%96%E8%AF%AD%E8%A8%80%E7%8E%AF%E5%A2%83%E7%9A%84%E9%97%AE%E9%A2%98%3F

 

你可能感兴趣的:(程序内外语言环境)