У меня была такая же проблема.
Я использовал стандартную практическую работу с фрагментом ( Создание гибкого пользовательского интерфейса ).
У меня есть два фрагмента (ListItemsFragment и InfoItemFragment).
Когда используется нормальный размер экрана, я заменяю ListItemsFragment на InfoItemFragment и
метод onHiddenChanged не вызывает автоматический.
FragmentTransaction mFragmentTransaction = getFragmentManager().beginTransaction();
mFragmentTransaction.replace(R.id.container_fragment, new InfoItemFragment(), "tag_fr_infoItem");
mFragmentTransaction.addToBackStack(null);
mFragmentTransaction.commit();
Я думаю, что мы должны вызвать метод Hide FragmentTransaction. Например:
ListItemsFragment mListItemsFragment;
FragmentTransaction mFragmentTransaction = getFragmentManager().beginTransaction();
mFragmentTransaction.replace(R.id.container_fragment, new InfoItemFragment(), "tag_fr_infoItem");
if (mListItemsFragment != null) {
mFragmentTransaction.hide(mListItemsFragment);
}
mFragmentTransaction.addToBackStack(null);
mFragmentTransaction.commit();
А теперь метод onHiddenChanged работает нормально. Когда пользователь нажимает кнопку «Назад» mListItemsFragment снова отображается и метод onHiddenChanged вызывается автоматически.
В документации сказано:
это будет вызываться всякий раз, когда фрагмент изменяет состояние с этого
Я думаю, что мы должны вручную изменить значение, тогда будет вызван метод.