Вы можете создать интерфейс и все фрагменты реализуют этот интерфейс, и внутри вашего onWindowFocusChanged
вы получите текущий фрагмент и передать вызов метода предоставленный интерфейс.
интерфейс образца для фрагментов может быть:
public interface IOnFocusListenable {
public void onWindowFocusChanged(boolean hasFocus);
}
Ваши фрагменты должны реализовать этот интерфейс:
public class MyFragment implements IOnFocusListenable {
....
public void onWindowFocusChanged(boolean hasFocus) {
...
}
}
И в onWindowFocusChanged
вашей деятельности вы можете сделать следующее:
public class MyActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(currentFragment instanceof IOnFocusListenable) {
((IOnFocusListenable) currentFragment).onWindowFocusChanged(hasFocus);
}
}
}
Или вы создаете слушателя, и активный фрагмент добавляется к слушателю. Поэтому, если фрагмент становится видимым, вы подписываетесь на этот прослушиватель, и каждый раз, когда вызывается событие onWindowFocusChanged
, вы вызываете этот прослушиватель.
Этот подход очень похож на выше, с той разницей, что существует список IOnFocusListenable
-х, и те, которые вызвали в деятельности onWindowFocusChanged
методу
Отличный ответ, очень полезно и аккуратно! – arniotaki