В этом коде:
getVisibleFragment().getActivity().recreate();
вы воссоздаете все activity
, а не fragment
. Итак, если fragment
, который вы хотите восстановить, находится в activity
, где размещен метод onOptionsItemSelected(MenuItem item)
, вы просто воссоздаете текущую активность, поэтому вы можете вызвать просто:
recreate();
вместо вашего кода.
Но если вы хотите просто воссоздать fragment
без воссоздания целого activity
, вы можете поместить код, где вы инициализируете все представления вашего fragment
, в отдельный публичный метод и вызвать их, например:
@Override
public void onResume() {
super.onResume();
updateUi();
}
public void updateUi() {
// Your code
}
, а затем:
case R.id.fr:
LocaleHelper.setLocale(getBaseContext(), "Fr");
if(getVisibleFragment().isAdded()){
((YourFragment)getVisibleFragment()).updateUi();
}
return true;