У меня была такая же проблема.
Я использовал стандартное руководство практической работы с фрагментом (Building a Flexible UI). У меня есть два фрагмента (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 называется автоматическим.
В документации сказал: это будет называться всякий раз, когда фрагмент изменяет состояние от этого
Я думаю, что мы должны изменить вручную значение, то метод будет вызван.
Спасибо за ответ, но метод не вызывался никогда. Поэтому я решил это из-за того, что у моего зрителя есть слушатель. В этом слушателе я вызываю метод onHidden-Changed. Глупый, но да, он работает сейчас. – mikepenz
Его никогда не называли. –