2012-06-13 55 views
2

因此,根據一個單獨的問題,我問我正在使用下面的代碼來切換語言。交換語言*幾乎正在工作

當我手動更改Android中的語言(在設置中)時,它從正確的drawable和字符串資源中拉出,所以我相信我已經正確配置了這些資源。

但是,當我調用這段代碼時,沒有任何反應(字面上,沒有任何反饋,沒有錯誤,沒有任何反饋)。

我不確定我是否使用了正確的語言環境代碼,並且對語言環境如何轉換爲語言有些困惑......我希望有人能告訴我我在這裏失蹤的具體內容。

Resources res = getApplicationContext().getResources(); 

Locale locale = new Locale("us"); //here I have tried "en", "es", "en_US", "es_ES", nothing happens 
Locale.setDefault(locale); 

Configuration config = new Configuration(); 
config.locale = locale; 

res.updateConfiguration(config, res.getDisplayMetrics()); 

這是由一個單選按鈕切換的方式調用,我已經設置了調試,並相信該代碼被調用,它傳遞我希望到Locale.setDefault方法的值。

所有幫助非常感謝。

回答

2

AH!

所以,解決方案(至少是能夠工作的解決方案,如果它不是正確的方式,或許其他人會用正確的方式嵌入)似乎是在此代碼之後再次設置ContentView。語言元素都可以正確顯示。西班牙語是「en」,西班牙語是「es」。

+0

我只是在處理與此相關的答案。 'updateConfiguration()'不會重新加載資源AFAIK。 *您*必須重新加載資源。無論是'setContentView()'還是更精細的東西都是正確的答案將取決於活動。而且,請記住,您可能需要爲所有已創建且尚未銷燬的活動執行此操作。 – CommonsWare

+0

@CommonsWare,似乎確實如此。我發現必須保存切換狀態並手動將其設置爲用戶在進行語言切換時所處的位置。不是最漂亮的解決方案,但考慮到不得不手動設置所有語言元素的替代方案,我想我會受到影響:) –