Три вкладки запускаются одновременно

Я использую 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;
    }
Другие вопросы по тегам