2014-01-18 89 views
0

嗨我有一個PreferencesFragment和存儲設置的問題。當我在Android中更改手機的語言時,我的偏好設置的存儲值仍然是以前的語言,並且未在PreferencesFragment中設置。每種語言都有不同的值文件夾。我能做些什麼來解決它?SharedPreferences和不同的語言

+0

請更清楚地說明問題。首選項字符串不變(例如標題,摘要等)?或者你想自動改變儲存的偏好值? –

+0

我想自動更改首選項的存儲值 – keysersoze

+0

完成並重新啓動您的PreferenceActivity。 –

回答

0

好,因爲你想改變偏好的值。我不認爲它可以通過API自動完成。您將不得不編寫自己的代碼來設置首選項值。

您可以將語言相關首選項值存儲在values-xx目錄中。例如。字符串,整數等。

當有人更改手機的語言時,您的活動將重新啓動。您應該以此爲契機更改onCreate中的首選項值。首先,存儲正在使用的當前語言,以便可以用它來檢測語言是否已更改。您可以使用Locale做到這一點(Locale.getDefalt()

現在,如果你發現一個語言的變化,只是通過調用getResources()獲得通過Resources對象的值和更​​改所有依賴於語言的首選項值。

+0

我不知道如何爲ListPreference和MultiSelectListPreference操作 – keysersoze

+0

爲什麼在偏好中存儲語言相關的字符串?你應該使用字符串來顯示和存儲爲整數。這就是爲什麼LisPreference有兩個屬性(entries,entryValues)。從存儲的整數值中,可以得到映射的轉換字符串。 –

0

應用程序中的偏好語言不依賴於您的手機語言。如果它的依賴,你甚至不需要它在你的應用程序中,第一個地方。你應該編碼的方式,你有汽車語言,這取決於手機語言。