2011-06-21 65 views
8

可能重複:
Changing Locale within the app itself如何強制語言在Android應用程序

在我的應用程序需要「力」的語言讓我們說,我有語言環境英語作爲默認拋光和芬蘭語,根據that post我創建的函數也發佈了bellow,函數在createActivity()中調用,但問題是它不起作用....任何想法爲什麼?有什麼建議麼?

private void setLocale(String localeCode){ 
     Locale locale = new Locale(localeCode); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    } 

回答

3

添加在清單如下(爲每個活動):

android:configChanges="locale" 

感謝 迪帕克

11

這是我走到這一步。我知道這個問題已經解決,但我的解決方案更簡單,更緊湊。不需要其他更改,清單中的所有活動都不需要android:configurationChanges屬性。

public class SigmaMiddleEastApplication extends PPGApplication { 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     newConfig.locale = Locale.ENGLISH; 
     super.onConfigurationChanged(newConfig); 

     Locale.setDefault(newConfig.locale); 
     getBaseContext().getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics()); 
    } 
} 

當心,這可能會導致問題: What could cause an Android activity to relaunch itself infinitely when returning from camera?

+3

只是包裝周圍的一切都有 「如果(newConfig.locale = targetLocale!)」 應該可以解決無限重新開張問題。 – Edison

相關問題