Currently under main activity I am using a List fragment and I am creating it dynamically . Basically it is running the same instance of a fragment.
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, TabsListener {
public List<Fragment> fragmentList = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
fragmentList.add(NewsFragment.newInstance("https://www.yahoo.com"));
fragmentList.add(NewsFragment.newInstance("http://www.google.com/"));
fragmentList.add(NewsFragment.newInstance("http://www.stackoverflow.com/"));
fragmentList.add(NewsFragment.newInstance("http://www.2leep.com/"));
mViewPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
mViewPager.setAdapter(pagerAdapter);
After the user selects to remove the fragment I want to be able to remove it from the list and the screen. I just can't seem to figure it out. Please check the on activity result. Also I tried setting up static numbers like
pagerAdapter.removeFragment(0);
but it will only work the first time then the list seems to get rearranged and the numbers wont match the fragment. My question is fairly simple how do i get the position of the fragment?
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK || data == null)
switch (removeTab)
{
case "yahoo"
pagerAdapter.removeFragment(//how to get this position?);
case "google"
pagerAdapter.removeFragment(//how to get this position?);
case "stackoverflow"
pagerAdapter.removeFragment(//how to get this position?);
case "2leep"
pagerAdapter.removeFragment(//how to get this position?);
}
This is my Adapter
public class TabPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> mFragmentList;
private List<String> tabTitles = new ArrayList<>();
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
public TabPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
mFragmentList = fragmentList;
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void removeFragment(int tabPosition) {
if (!mFragmentList.isEmpty()) {
mFragmentList.remove(tabPosition);
}
}
}