6
내 Android 앱에는 사용자가 앱의 언어를 덮어 쓰도록하는 기본 설정 활동이 있습니다. 이를 위해 나는 모든 활동의 onResume()이 함수를 호출 한 다음 콘텐츠보기를 재설정 :기본 설정 활동의 Android 업데이트 언어
public static void checkOverrideSystemLanguage(Context context) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
// Check if system's language setting needs to be overridden
boolean overrideSystemLanguage = prefs.getBoolean(context
.getString(R.string.pref_key_chkbx_override_system_language),
false);
if (overrideSystemLanguage) {
// Get language selection and possible languages
String localeString = prefs.getString(
context.getString(R.string.pref_key_list_languages), "");
List<String> possibleLanguages = Arrays.asList(context
.getResources().getStringArray(
R.array.pref_values_list_languages));
if (possibleLanguages.contains(localeString)) {
// Change language setting in configuration
Locale locale = new Locale(localeString);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getResources().updateConfiguration(config,
context.getResources().getDisplayMetrics());
}
// Use default language
else {
overrideSystemLanguage = false;
}
}
// Use default language
if (!overrideSystemLanguage) {
context.getResources().updateConfiguration(
Resources.getSystem().getConfiguration(),
context.getResources().getDisplayMetrics());
}
}
그것을 완벽하게 잘 작동 모든 활동에서. 그러나 환경 설정 활동에서 사용자가 언어를 변경하면 setContentView() 메소드가 없기 때문에 언어를 즉시 업데이트하지 않는다. 사용자는 이전 활동으로 돌아가서 언어 활동이 다시 반영되도록 환경 설정 활동을 다시 시작해야합니다.
를 구성 업데이트checkOverrideSystemLanguage(this);
// Remove all preferences and add them to update the language
getPreferenceScreen().removeAll();
addPreferencesFromResource(R.xml.preferences);
하고에서 onCreate (NULL)를 호출 : 분리 및 선호도를 재 부가, 구성 업데이트
:
난 ㄱ onPreferenceChange() 수신기의 다음 시도활동 완료 및 다시 시작
finish(); startActivity(new Intent(this, PreferencesActivity.class));
감사합니다.
작은 해킹을 사용하여 처음에 호출하는 일부 메소드에서 getActionBar(). setTitle ("your title")을 호출 할 수 있습니다. –