基本上我只有tablayout,每个标签都包含一个webview。从设置菜单中,我允许用户添加或删除选项卡。完成后我需要调用pageradapter.notifydatasetchanged();然而这样做所有webview都开始刷新。我的问题是,有没有办法避免这种情况?我只想在不影响其他标签的情况下添加或删除标签。
case "Yahoo":
if (!fragmentList.contains(fragYahoo)) {
if (tabYahoo == null) {
tabYahoo = tabLayout.newTab().setText("Yahoo").setTag("Yahoo");
}
tabLayout.addTab(tabYahoo);
fragYahoo = NewsFragment.newInstance("http://www.Yahoo.com/");
fragmentList.add(fragYahoo);
navigationView.getMenu().findItem(R.id.Yahoo).setVisible(true);
}
break;
case "stackoverflow":
if (!fragmentList.contains(fragstackoverflow)) {
if (tabstackoverflow == null) {
tabstackoverflow = tabLayout.newTab().setText("stackoverflow").setTag("stackoverflow");
}
tabLayout.addTab(tabstackoverflow);
fragstackoverflow = NewsFragment.newInstance("http://www.stackoverflow.com/");
fragmentList.add(fragstackoverflow);
navigationView.getMenu().findItem(R.id.stackoverflow).setVisible(true);
}
pagerAdapter.notifyDataSetChanged();
pageradapter初始化
public List<Fragment> fragmentList = new ArrayList<>();
mViewPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
mViewPager.setAdapter(pagerAdapter);
mViewPager.setOffscreenPageLimit(pagerAdapter.getCount()-1);
答案 0 :(得分:0)
我没有测试,但您可以使用TabLayout#setupWithViewPager(viewPager, false);
。
第二个参数是autoRefresh:
* @param autoRefresh whether this layout should refresh its contents if the given ViewPager's
* content changes