Фрагменты Android скрывают шоу OnHide / OnShow? - PullRequest
11 голосов
/ 15 августа 2011

Я спрашиваю, потому что мне это любопытно.

1) Большинство демонстрационных программ Google находят фрагменты по их идентификатору, если фрагмент уже создан в xml.

Так что, если мы выберем этот подход, мы покажем фрагменты, скрыв их и показав, поскольку фрагменты уже созданы.

2) Google также предоставляет примеры, в которых вы можете создать фрагмент с помощью конструктора и накачать его.Это ведет себя странно, когда getActivity () возвращает значение null, если оно вызывается с этим фрагментом.

Итак, если я выберу первый подход, мне придется спрятаться и показать фрагменты.Так почему же Google не предоставляет хуки для фрагментов, таких как onHide или onShow, чтобы мы могли вместо этого обрабатывать вещи правильно, если выполняем очистку сами с помощью функций, которые мы реализуем и вызываем явно.

Ответы [ 3 ]

31 голосов
/ 14 сентября 2011

Если вы хотите подключить оп onHide / onShow, просто переопределите

public void onHiddenChanged(boolean hidden) {
}

в вашем фрагменте.

0 голосов
/ 05 февраля 2017

С помощью переопределения setUserVisibleHint вы можете легко отследить его.

  @Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser){
      //When fragment is visible
    }
    Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser);
}
0 голосов
/ 09 октября 2013

Я переопределяю функцию ниже, чтобы определить, будет ли фрагмент показан или скрыт.

@ Override public void setMenuVisibility (видимое окончательное логическое значение)

...