如何刷新應用與onConfigChanges沒有鬆動的情況下
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不適用於區域設置,因爲它是爲Orientation工作的。
謝謝!
什麼都沒有發生...... :( –
我需要更改活動語言,因爲我選擇另一種語言....所有應用程序應自動更改爲選定的語言... –
發佈您的微調代碼。 – Queendevelopers