我希望我的语言动态更改,我正在尝试使用 onConfigurationChanged 但它没有被调用。我有一个 MainActivity 来创建我的操作栏和 viewpager。我的其余页面是片段。在我的 SettingsFragment 中,我有一个将语言切换为法语的按钮。
langChange.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View vi) {
MainActivity main = (MainActivity)getActivity();
main.langChange();
}
});
然后在我的 MainActivity 我有
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if (locale != null){
newConfig.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
public void langChange(){
if(currentLanguage == FRENCH_LANGUAGE){
locale = new Locale("en");
Locale.setDefault(locale);
Configuration c = getBaseContext().getResources().getConfiguration();
c.locale = locale;
getBaseContext().getResources().updateConfiguration(c,getBaseContext().getResources().getDisplayMetrics());
currentLanguage = "English";
}
else if(currentLanguage == ENGLISH_LANGUAGE){
locale = new Locale("fr");
Locale.setDefault(locale);
Configuration c = getBaseContext().getResources().getConfiguration();
c.locale = locale;
getBaseContext().getResources().updateConfiguration(c,getBaseContext().getResources().getDisplayMetrics());
currentLanguage = "French";
}
actionBar.setSelectedNavigationItem(actionBar.getTabCount() - 1); //This just puts it back to the settings tab
}
onConfigurationChanged
没有被调用。在我的清单中,我有:
<activity android:name="MainActivity" android:screenOrientation="portrait" android:configChanges="locale"></activity>
我尝试添加一个或所有这些选项orientation|keyboardHidden|screenSize
,但没有成功。
所有这一切的原因是因为我想在单击按钮后更改 actionBar 文本和所有其他文本。我有一个单独的法语字符串文件。
任何帮助都会很棒。