Intereting Posts
Преобразование строки цвета андроида во время выполнения в int Как включить перенос приложения на SD-карту (и поддержка андроида еще <2.2)? Запретить OkHttp / Retrofit от обхода прокси Можно ли инициализировать Firebase без использования google-services.json? Не удалось получить неизвестное свойство 'assembleRelease' при использовании gradle 2.14.1 Как реализовать голосовый поиск в SearchView Каков наилучший серверный протокол связи с клиентами для использования в Android и iOS? Не удалось удалить android.compileSdkVersion! Построение градиента ошибок Android – как создать диаграмму семейного дерева (визуальный) Есть ли степень магистра в области разработки мобильных приложений, таких как android? Android Google Play Предупреждение: Уязвимость SSL-обработчика ошибок Пользовательский вид Android должен расширять AppCompatTextView Сортировка Android ListView ViewPager и OnItemClickListener в ListView Я хочу показать пользовательский диалог, как iphone HUD Progress Bar

Обнаруживать, когда фрагмент становится видимым

Почему бы не дублировать: рекомендуемый пост работает только для viewpager или когда вызывается onResume.

У меня есть listfragment и detailfragment. Фрагмент детали открывается при нажатии элемента списка. Я выполняю это, скрывая списокfragment, и я показываю detailfragment. Когда пользователь возвращается, он возвращается к списку.

Как я могу определить, когда пользователь вернется к моему фрагменту или когда мой фрагмент будет виден?

Обратите внимание, что я хотел бы продолжать использовать .hide () и show () и что я ищу слушателя или onVisible, чтобы проверить, когда фрагмент станет видимым, а не метод проверки его видимости.

Solutions Collecting From Web of "Обнаруживать, когда фрагмент становится видимым"

РЕДАКТИРОВАТЬ:
Как указано в комментариях, setUserVisbileHint() не вызывается автоматически, а FragmentPageAdapter при использовании в ViewPager.

Для сценария, описанного в вопросе, onHiddenChanged(boolean hidden) http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean) .
Как указано в документации, метод вызывается каждый раз, когда изменяется скрытое состояние фрагментов, но не на начальной настройке фрагмента.


Вы можете использовать setUserVisibleHint() http://developer.android.com/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)

Если isVisibleToUser установлен в true фрагмент должен отображаться.

Читайте о методе: Фрагмент. IsVisible ()

Пример:

 MyFragmentClass test = (MyFragmentClass) getSupportFragmentManager().findFragmentById("myFragnmentID"); if (test != null && test.isVisible()) { //VISIBLE! =) } else { //NOT VISIBLE =( } 

Вы можете отправить событие в свою деятельность при запуске фрагмента: https://www.inkling.com/read/programming-android-mednieks-1st/chapter-11/visualizing-the-fragment-life

Переопределяя метод onStart:

 @Override public void onStart() { super.onStart(); ((MyInterface)getActivity()).onFragmentIsVisible( this ); } 

Где MyInterface – это интерфейс:

 public MyInterface { public void onFragmentVisible( Fragment fragment ); } 

И ваша деятельность должна будет его реализовать.

Это может быть проще с библиотекой автобусов событий, например

  • Шина событий RoboGuice
  • эфирное масло
  • EventBus