0
我已經知道如何更改我的應用程序的語言(更新配置)。我的代碼還檢查配置是否被系統改變,並在'onCreate'方法中「修復」。我甚至創建了一個ListPreference來讓用戶用我的應用程序支持的語言來決定語言(並保存決定)。更改語言時修復資源
比方說,我有3個活動(A,B和SettingsActivity)。活動A可以啓動活動B和設置活動。活動B可以啓動SettingsActivity。如果用戶更改內部SettingsActivity的語言,我可以使用此代碼沒有任何問題更新其資源(在這種情況下字符串):
//if (Build.VERSION_CODES.HONEYCOMB <= Build.VERSION.SDK_INT) {
// Disabled because it blinks and looks bad
// recreate();
// } else {
startActivity(getIntent());
finish();
overridePendingTransition(0, 0);
// }
不過,我無法改變已經打開的活動,因爲我沒有從SettingsActivity引用它們。
我的問題:是否有任何干淨的方式來更新資源或重新創建已經開放的活動?如果我沒有找到一個更好的解決辦法,我的做法將是上述之一:
- 開始活動使用
startActivityForResult
並返回代碼觸發我已經使用重新創建活動的代碼。 - 檢查
onResume
方法的內部是否當前的語言已更改並執行相同的操作。
[更改應用程序本身內的區域設置]的可能重複(http://stackoverflow.com/questions/2264874/changing-locale-within-the-app-itself)。爲了重新創建'Activity',我使用了'onResume()'方法。 –
我已經閱讀過這個問題,大部分答案和我的問題都不是重複的。 – gian1200
[這個答案](http://stackoverflow.com/a/4881721/2821954)是我在我的應用程序中使用的。基本上,對於每個可以訪問Activity的設置的Activity,都可以在'onCreate()'中添加一個變量來存儲當前的語言(比如'Locale'或'String'等等)。然後,覆蓋'onResume()'來檢查語言是否改變。如果是,請重新創建「活動」。 –