У меня есть приложение с ViewPager, которое содержит два фрагмента :основной фрагмент и фрагмент списка. Если что-то в списке выбрано, возникает событие, которое обрабатывается в действии. Активность переключается на основной фрагмент и вызывает метод setSelectedItem. В этом методе Я использую getView (), чтобы найти конкретное представление для изменения текста в соответствии с выбранным элементом.
В большинстве случаев это работает, но иногда getView возвращает null, и я не знаю, почему.
PagerAdapter создается в OnCreate действия:
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
Адаптер пейджера создает экземпляры обоих фрагментов в своем конструкторе:
public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}
Это метод в действии, который вызывается при выборе элемента из списка:
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
И, наконец, это строка в методе setSelectedItem в MainFragment, которая вызывает проблему:
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
Я попробовал несколько вещей, о которых читал, но проблема все еще возникает нерегулярно.