アプリでアプリのローカリゼーションを変更しようとしています。アクションバーのサブメニューから変更しようとしています:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu langSelection = menu.addSubMenu(getString(R.string.message_lang));
langSelection.add(getString(R.string.message_eng)).setOnMenuItemClickListener(new
OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
System.out.println("ENG");
try{
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
//getBaseContext().getResources().updateConfiguration(config,
// getBaseContext().getResources().getDisplayMetrics());
mContext.getApplicationContext().getResources()
.updateConfiguration(config, null);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return true;
}
});
MenuItem subMenu1Item = langSelection.getItem();
//setting pic for Actions
// subMenu1Item.setIcon(R.drawable.icon57);
subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
}
return super.onCreateOptionsMenu(menu);
}
このコードは FragmentActivity にあります。ミニフェストで私が追加した:
android:configChanges="locale"
しかし、私が言語を変更すると、これは呼び出されません:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
System.out.println("onConfigurationChanged() Called");
super.onConfigurationChanged(newConfig);
}
私は何かを忘れましたか?
ありがとう