我希望我的語言能夠動態更改,我嘗試使用onConfigurationChanged,但它沒有被調用。我有一個MainActivity來創建我的操作欄和viewpager。我的其餘部分是碎片。在我的SettingsFragment中,我有一個按鈕來將語言切換到法語。區域設置:onConfigurationChanged不叫
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文本和所有其他文本。我有一個單獨的法語字符串文件。
任何幫助將是偉大的。
你怎麼知道'onConfigurationChanged'沒有被調用?你在方法內部的代碼周圍檢查'null',這可能是問題所在。也看看這個問題:http://stackoverflow.com/questions/6457659/android-onconfigurationchanged-not-being-called – Darwind
我添加了斷點之前和之後if語句與'Log.d'以及。我知道它沒有打這個方法。我也看了上面的問題,那些答案沒有解決我的問題 – BigT