2016-12-11 2 views
0

У меня есть NavigationView, где у меня есть вкладки, такие как "Home","Profile","Service" и т. Д. Когда я нажимаю один из них, я хочу изменить TabLayout и Input моего ViewPager (видимые фрагменты). Я изменяю TabLayout, в прослушивателе onNavigationItemSelected, с методом tabLayout.setupWithViewPager(tabViewPager);, который отлично работает для моих TabTitles.Невозможно обновить фрагменты в Viewpager

И изменение для моего Viewpager Я пробую это: tabViewPager.setAdapter(viewPagerAdapter1); и, например, в другой навигации нажмите tabViewPager.setAdapter(viewPagerAdapter2);.

Мой ViewPager класс выглядит следующим образом:

public class TabViewPagerAdapter extends FragmentPagerAdapter { 
    private List<Fragment> mFragmentList = new ArrayList<>(); 
    private List<String> mFragmentTitleList = new ArrayList<>(); 
    Resources resources; 

    public TabViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFrag(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    }} 

Так Im инициализации. мой адаптер, как это в начале:

viewPagerAdapter1 = new TabViewPagerAdapter(getSupportFragmentManager()); 
    viewPagerAdapter1.addFrag(new Home1Fragment(),"abc"); 
    viewPagerAdapter1.addFrag(new Home2Fragment(),"def"); 

Но ничего не изменится ViewPager все то же только мои Названия моих Вкладок меняются. Как я могу это решить?

ответ

0

я не нашел хорошее решение, так что я решил сделать фрагменты для всех Navigations. И в этих фрагментах я сделал отдельный просмотрщик. Теперь у меня есть более одного Viewpager.

Я думаю, что это не самое лучшее решение, но оно работает ^^

1

https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#notifyDataSetChanged()

public void addFrag(Fragment fragment, String title) { 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
    notifyDataSetChanged(); 
} 
+0

Моя проблема в том, что setAdapter() работает только в самом начале. После того, как я второй раз вызываю этот метод с другим адаптером, мой просмотрщик не обновляет фрагменты и сохраняет старый контент. –

+0

Не можете ли вы добиться такого же поведения с помощью одного адаптера? Попробуйте добавить к адаптеру метод «removeFragment» или «removeAllFragments» и просто сбросьте его перед добавлением новых фрагментов. Не забывайте вызывать 'notifyDataSetChanged' каждый раз, когда вы меняете базовый набор данных. – fraggjkee

+0

Я пробовал это сейчас, но он не работает ... Я добавил метод clearFragList(), который вызывает .clear() в моих списках, и после этого вызова я добавил новые фрагменты и вызвал notifyDataSetChanged(). Не работает: (другие идеи? –

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