0

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);

        }
    }


}
choman
  • 787
  • 1
  • 5
  • 24

1 Answers1

0

Just to answer my own question. I added the fragment this way

public List<Fragment> fragmentList = new ArrayList<>(); 
private NewsFragment frag1 
frag1 = NewsFragment.newInstance("https://www.yahoo.com");                  
fragmentList.add(frag1); 

In case I need to find the position of the fragment

for (int i = 0; i < fragmentList.size(); i++) { 
if (fragmentList.get(i).equals(frag1)) {
//found the position so removing it 
pagerAdapter.removeFragment(i); } 
}
choman
  • 787
  • 1
  • 5
  • 24