protected void onResume() {
super.onResume();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();
String lang = settings.getString("lang_list", "");
// Log.d("Lang",lang);
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {
recreate();
Locale locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
if (AppController.getInstance().isPreferenceChanged()) {
setupViewPager(viewPager);
adapter.notifyDataSetChanged();
}
}
我想更改应用程序语言而不重新创建应用程序。我的意思是当用户从设置中选择任何语言时我想这样做,然后它应该在不使用的情况下更改设置活动语言recreate();
,因为当我使用recreate();
它时,应用程序会闪烁一次。
所以我没有使用recreate();
. 相反,我在设置活动中编写了以下代码AndroidManifest.xml
<activity
android:name=".activity.SettingsActivity"
android:label="@string/title_activity_settings"
android:configChanges="orientation|keyboardHidden|screenSize|locale|layoutDirection"/>
如下图所示,您可以看到我选择了“印地语”作为语言,但它没有将活动更新为印地语。我的意思是“选择国家”、“选择您的语言”和“选择类别”应该用印地语而不是英语显示。我用两种语言写过字符串。
任何人都可以知道更改语言时如何更改它吗?或为什么 onConfigChanges 不适用于区域设置,因为它适用于方向。
谢谢 !