如何从 TabLayout 和 FragmentStatePagerAdapter 中删除 Tab 及其关联的片段
How to delete a Tab and its associated fragment from TabLayout & FragmentStatePagerAdapter
I am trying to create a program with TabLayout and an option menu which when selected can add or delete the tab along with the fragment.我可以删除选项卡,但我无法理解还需要做什么,因为我必须删除选项卡包含的片段,而且我可能还必须重新排列片段的位置,而我似乎无法弄清楚。你能帮我解决这个问题吗?
在 mainAcitivity 下,这是我添加选项卡的方式
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tab1= tabLayout.newTab().setText("TAB 1");
tabLayout.addTab(tab1);
tab2 = tabLayout.newTab().setText("TAB 2");
tabLayout.addTab(tabKantipur);
这是 FragmentstatePagerAdapter
public class TabPagerAdapter extends FragmentStatePagerAdapter {
int tabCount;
public TabPagerAdapter(FragmentManager fm, int numberOfTabs) {
super(fm);
this.tabCount = numberOfTabs;
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return NewsFragment.newInstance("data for fragment 1");
case 1:
return NewsFragment.newInstance("data for fragment 2");
default:
return null;
}
}
@Override
public int getCount() {
return tabCount;
}
}
基本上这里的 NewsFragment 是在选项卡中使用其新实例的片段。在 onActivityResult 下,我正在获取从选项菜单请求的数据以添加或删除 fragmetns
mpagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
removedTab = ..data received from ooption menu
// here I want to remove the Tab & the fragments (tab1 & its fragment)
if (removeTab == "tab1") {
tabLayout.removeTab(tab1);
mpagerAdapter.notifyDataSetChanged();
}
}
当我这样做时,只有第一个选项卡被删除我想知道如何也删除关联的片段。
您不必明确删除片段,您可以删除片段。
您可以删除选项卡并在 viewPagerAdapter 上执行 notifyDataSetChanged instance.It 将负责删除片段。
我曾使用 fragmentarray 问过一个类似的问题,我让它工作了。这是 link、
I am trying to create a program with TabLayout and an option menu which when selected can add or delete the tab along with the fragment.我可以删除选项卡,但我无法理解还需要做什么,因为我必须删除选项卡包含的片段,而且我可能还必须重新排列片段的位置,而我似乎无法弄清楚。你能帮我解决这个问题吗?
在 mainAcitivity 下,这是我添加选项卡的方式
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tab1= tabLayout.newTab().setText("TAB 1");
tabLayout.addTab(tab1);
tab2 = tabLayout.newTab().setText("TAB 2");
tabLayout.addTab(tabKantipur);
这是 FragmentstatePagerAdapter
public class TabPagerAdapter extends FragmentStatePagerAdapter {
int tabCount;
public TabPagerAdapter(FragmentManager fm, int numberOfTabs) {
super(fm);
this.tabCount = numberOfTabs;
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return NewsFragment.newInstance("data for fragment 1");
case 1:
return NewsFragment.newInstance("data for fragment 2");
default:
return null;
}
}
@Override
public int getCount() {
return tabCount;
}
}
基本上这里的 NewsFragment 是在选项卡中使用其新实例的片段。在 onActivityResult 下,我正在获取从选项菜单请求的数据以添加或删除 fragmetns
mpagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
removedTab = ..data received from ooption menu
// here I want to remove the Tab & the fragments (tab1 & its fragment)
if (removeTab == "tab1") {
tabLayout.removeTab(tab1);
mpagerAdapter.notifyDataSetChanged();
}
}
当我这样做时,只有第一个选项卡被删除我想知道如何也删除关联的片段。
您不必明确删除片段,您可以删除片段。
您可以删除选项卡并在 viewPagerAdapter 上执行 notifyDataSetChanged instance.It 将负责删除片段。
我曾使用 fragmentarray 问过一个类似的问题,我让它工作了。这是 link、