无法更新 Viewpager 中的片段
Can't update Fragments in Viewpager
我有一个 NavigationView,其中有 "Home","Profile","Service"
等选项卡。当我单击其中一个时,我想更改 TabLayout 和 ViewPager 的输入(可见片段)。我在 onNavigationItemSelected
侦听器中更改了 TabLayout ,方法 tabLayout.setupWithViewPager(tabViewPager);
对我的 TabTitles 很好用。
我的 Viewpager 的更改我尝试这样做:tabViewPager.setAdapter(viewPagerAdapter1);
例如在另一个导航中单击 tabViewPager.setAdapter(viewPagerAdapter2);
。
我的 ViewPager class 看起来像这样:
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);
}}
所以我初始化了。我的适配器一开始是这样的:
viewPagerAdapter1 = new TabViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter1.addFrag(new Home1Fragment(),"abc");
viewPagerAdapter1.addFrag(new Home2Fragment(),"def");
但没有任何变化!Viewpager 仍然相同,只是我的标签标题发生了变化。我该如何解决这个问题?
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
notifyDataSetChanged();
}
我没有找到好的解决方案,所以我决定为所有导航制作片段。在这些片段中,我制作了单独的 Viewpager。现在我有不止一个 Viewpager。
我认为这不是最好的解决方案,但它有效 ^^
我有一个 NavigationView,其中有 "Home","Profile","Service"
等选项卡。当我单击其中一个时,我想更改 TabLayout 和 ViewPager 的输入(可见片段)。我在 onNavigationItemSelected
侦听器中更改了 TabLayout ,方法 tabLayout.setupWithViewPager(tabViewPager);
对我的 TabTitles 很好用。
我的 Viewpager 的更改我尝试这样做:tabViewPager.setAdapter(viewPagerAdapter1);
例如在另一个导航中单击 tabViewPager.setAdapter(viewPagerAdapter2);
。
我的 ViewPager class 看起来像这样:
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);
}}
所以我初始化了。我的适配器一开始是这样的:
viewPagerAdapter1 = new TabViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter1.addFrag(new Home1Fragment(),"abc");
viewPagerAdapter1.addFrag(new Home2Fragment(),"def");
但没有任何变化!Viewpager 仍然相同,只是我的标签标题发生了变化。我该如何解决这个问题?
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
notifyDataSetChanged();
}
我没有找到好的解决方案,所以我决定为所有导航制作片段。在这些片段中,我制作了单独的 Viewpager。现在我有不止一个 Viewpager。
我认为这不是最好的解决方案,但它有效 ^^