Я пытаюсь создать программу с TabLayout и меню параметров, которое при выборе может добавить или удалить вкладку вместе с фрагментом. Я могу удалить вкладку, но я не могу понять, что еще нужно сделать, потому что мне нужно удалить фрагменты, которые удерживает вкладка, более того, мне также может потребоваться изменить положение фрагментов, которые я просто не могу представить выяснить. Не могли бы вы мне помочь?Как удалить вкладку и связанный с ней фрагмент из TabLayout & FragmentStatePagerAdapter
под 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();
}
}
Как я делаю это только первая вкладка получает удалена я хотел бы знать, как удалить соответствующий фрагмент тоже.
Вы хотите сделать это на этом же шаге? Не уверен, но вы всегда можете программно удалить фрагмент. http://stackoverflow.com/questions/22474584/remove-old-fragment-from-fragment-manager –
Кроме того, 'removeTab ==" tab1 "' не так, как вы сравниваете строки в Java –
Да, я хочу сделать это в тот же шаг, который я провел недели, по-прежнему не может этого сделать. Все учебники рассказывают об установке тега для фрагмента, но, как вы видите, у меня нет тега в моем фрагменте. – choman