Одна вещь, чтобы быть в курсе, что isVisible()
возвращает видимое состояние текущего фрагмента. В библиотеке поддержки есть проблема: если у вас есть вложенные фрагменты, и вы скрываете родительский фрагмент (и, следовательно, все дети), ребенок все еще говорит, что он виден.
isVisible()
является окончательным, поэтому, к сожалению, он не может быть отменен. Мой обходной путь был создать BaseFragment
класс, что все мои фрагменты продлить, а затем создать метод следующим образом:
public boolean getIsVisible()
{
if (getParentFragment() != null && getParentFragment() instanceof BaseFragment)
{
return isVisible() && ((BaseFragment) getParentFragment()).getIsVisible();
}
else
{
return isVisible();
}
}
я isVisible() && ((BaseFragment) getParentFragment()).getIsVisible();
, потому что мы хотим, чтобы вернуться ложным, если любой родительских фрагментов скрыты.
Это похоже на трюк для меня.
http://developer.android.com/reference/android/app/Fragment.html#isVisible() – Tarun
Решение, которое сработало лучше всего для меня, было http://stackoverflow.com/a/6751537/1816603 –