Метод onPageScrolled возвращает значение null после перехода на последнюю поддержку -библиотека v4

#android

#Android

Вопрос:

у меня здесь странная проблема, у меня есть фрагмент диалогового окна, и этот метод находится внутри него :

  @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        currentPosition = position;
        currentPositionOffset = positionOffset;

        scrollToChild(position, (int) (positionOffset *  
 tabsContainer.getChildAt(position).getWidth()));

        invalidate();

        if (delegatePageListener != null) {
            delegatePageListener.onPageScrolled(position, 
 positionOffset, positionOffsetPixels);
        }
    }
  

когда я использую более старую версию support-v4.jar он работает нормально, но когда я использую его последнюю версию, этот метод:

 scrollToChild(position, (int) (positionOffset *  
tabsContainer.getChildAt(position).getWidth()));
  

возвращает эту ошибку:

  06-19 11:56:23.764: E/AndroidRuntime(1024): java.lang.NullPointerException
 06-19 11:56:23.764: E/AndroidRuntime(1024):    at         
 com.astuetz.PagerSlidingTabStrip$PageListener.onPageScrolled
(PagerSlidingTabStrip.java:361)
 06-19 11:56:23.764: E/AndroidRuntime(1024):    at 
 android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1712)
 06-19 11:56:23.764: E/AndroidRuntime(1024):    at 
 android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1633)
 06-19 11:56:23.764: E/AndroidRuntime(1024):    at 
 android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:581)
 06-19 11:56:23.764: E/AndroidRuntime(1024):    at  
 android.support.v4.view.ViewPager.onLayout(ViewPager.java:1600)
  

вы понимаете, что не так?

Комментарии:

1. я предполагаю, что в этот раз позиция равна нулю, но что я могу с этим поделать и почему это происходит!

Ответ №1:

Это может быть полезно.

https://github.com/astuetz/PagerSlidingTabStrip/issues/69

Я только что столкнулся с той же проблемой, после небольшого тестирования я подтвердил, что причина в том, что внутри нет элементов для отображения PagerSlidingTabStrip .

Если вы уверены, что у вас есть данные, которые должны отображаться, на PagerSlidingTabStrip , возможно, вы забыли позвонить PagerSlidingTabStrip.notifyDataSetChanged();

Надеюсь, это вам поможет!