2011-01-14 51 views
1

我想旋轉手機並保留語言環境。我有文件夾值,值爲en和值小時。在每次活動我都在應用程序中強制「區域設置」

android:configChanges="keyboardHidden|orientation|locale" 

,並在每activity.java文件我有

private Locale locale = null; 

@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

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);    
    Configuration config = getBaseContext().getResources().getConfiguration(); 

    String lang = settings.getString("language","en"); 
    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()); 
    } 

它的工作,直到我轉動我的手機 - 應用程序是還在工作,按鈕和一切都很好 - 但語言環境越來越奇怪 - 有時它是我的語言環境(小時)有時它是(EN)...

我還需要補充什麼?

+0

爲什麼你是否搞亂了語言環境,而不是讓Android系統爲你處理它? – 2011-01-14 22:44:23

回答

1

我只是刪除了「如果」,現在一切正常。是的,每次「重新強制」一個地方都有點「笨重」,但我找不到另一種方式。

我的解決方案有點不同,我只是在onCreate和onConfigChange上「重新強制」它 - 並非每隔100ms左右和Desire(2.2)都完美地工作。

@Austyn

是的,這幾乎是同樣的問題,但我雖然有除「100毫秒逼迫」的另一個解決方案。

@Mayra

用戶希望有自己的母語(HR),但它不支持(目前的)手機,所以這是唯一的辦法 - 迫使它=/

相關問題