2014-12-02 2 views
2

Thats большая проблема для меня прямо сейчас, потому что мне нужно вызвать метод с интерфейса все мои фрагменты в моем viewpager реализуют. Мне нужно сделать что-то вроде этого:onPageSelected вызывается перед onViewCreated

@Override 
public void onPageSelected(int position) { 
    this.getActivity().getActionBar().setSelectedNavigationItem(position); 

    FragmentVisible fragment = (FragmentVisible) this.fragmentPager.instantiateItem(this.viewPager, position); 

    if (fragment != null) { 
     fragment.fragmentBecameVisible(); 
    } 
} 

Это работает для «нормального запуска», но когда я вращать экран я получаю NullPointer исключения потому что onPageSelected вызывается перед тем onViewCreated. Мне нужно, чтобы мои взгляды обновлялись каждый раз , фрагмент становится видимым. Сначала я надеялся, что onResume будет вызываться каждый раз, но это не так. Для этого я реализовал интерфейс:

public interface FragmentVisible { 
    public void fragmentBecameVisible(); 
} 

ли кто-то идея, как решить эту проблему?

ответ

0

Метод FragmentPagerAdapter's setPrimaryItem() (называется, когда ViewPager устанавливает текущую страницу), он вызывает setUserVisibleHint(true) для фрагмента текущей страницы. Вы можете переопределить этот метод в своем Fragment и выполнить свой метод fragmentBecameVisible().

+1

это также вызывается перед onCreate или onCreateView. но я думаю, я могу справиться с этим. я буду реализовывать setUserVisibleHint и onResume, а в setUserVisibleHint я проверю, что мои представления являются нулевыми или нет. Благодарю. – Mulgard

Смежные вопросы