Три вкладки запускаются одновременно
Я использую ViewPager с TabLayout и фрагменты в моем приложении. Я хочу, чтобы мое приложение запускало фрагменты при просмотре, но приложение загружает сразу 3 фрагмента. Это означает, что если у меня есть 3 вкладки, и пользователь на самом деле находится на среднем фрагменте, то и левый, и правый фрагменты уже запущены на CreateView. Есть ли способ заставить приложение делать что-то, когда фрагмент отображается на экране, а не рядом с показанным фрагментом?
1 ответ
Решение
Вы можете справиться с этим, добавив этот фрагмент к своим фрагментам, которые отображаются в вашем ViewPager:
private int mViewState = 0;
@Override
public void onPause() {
super.onPause();
setViewState(mViewState & ~1);
}
@Override
public void onResume() {
super.onResume();
setViewState(mViewState | 1);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
setViewState(mViewState);
}
private void setViewState(int newState) {
newState = getUserVisibleHint() ? newState | 2 : newState & ~2;
if (newState == 3 && mViewState != 3){
// I'm visible
}else if (newState != 3 && mViewState == 3) {
// I'm hidden
}
mViewState = newState;
}