参考:http://wenku.baidu.com/view/80de2573a417866fb84a8efc.html
LocalePicker.java ,菜单Settings/Language & keyboard/Select lanuage/调用到这个文件:当更改语言时:会调用updateConfiguration函数 。
LatinIME.java ,就会调用onConfigurationChanged函数。
在这个函数里条件相应的代码即可:
如:
// chengfuyong@20130306 began
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
// Save the selected languages
String checkedLanguages = "";
final String language = systemLocale.substring(0, 2);
if("en_US".equals(systemLocale)) {
if (IME_DEFAULT_INPUT_LANGUAGE == null) {
checkedLanguages += "en_US,";
} else {
checkedLanguages += IME_DEFAULT_INPUT_LANGUAGE + ",en_US,";
}
} else {
checkedLanguages += "en_US," + language + ",";
}
if (checkedLanguages.length() < 1) checkedLanguages = null; // Save null
Editor editor = sp.edit();
editor.putString(LatinIME.PREF_INPUT_LANGUAGE, language);
editor.putString(LatinIME.PREF_SELECTED_LANGUAGES, checkedLanguages);
SharedPreferencesCompat.apply(editor);
// chengfuyong@20130306 end
开机会调用onCreate函数,因此也要加上:
如:
// chengfuyong@20130306 began SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); // Save the selected languages String checkedLanguages = ""; final String language = systemLocale.substring(0, 2); if("en_US".equals(systemLocale)) { if (IME_DEFAULT_INPUT_LANGUAGE == null) { checkedLanguages += "en_US,"; } else { checkedLanguages += IME_DEFAULT_INPUT_LANGUAGE + ",en_US,"; } } else { checkedLanguages += "en_US," + language + ","; } if (checkedLanguages.length() < 1) checkedLanguages = null; // Save null Editor editor = sp.edit(); editor.putString(LatinIME.PREF_INPUT_LANGUAGE, language); editor.putString(LatinIME.PREF_SELECTED_LANGUAGES, checkedLanguages); SharedPreferencesCompat.apply(editor); // chengfuyong@20130306 end