Skip to content Skip to sidebar Skip to footer

How To Add Fragment Tag In A Fragmentpageradapter To Reference The Fragment Later?

I tried the following but it didn't help . How can I set tags or acess tags of fragments from FragmentPagerAdapter ? @Override public Fragment getItem(int position) {

Solution 1:

It seems that you are setting the tags correctly. Anyway, this way should work.

Set tag:

MyFeedFragment myFeedFragment= new MyFeedFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, myFeedFragment, "myfeed");
fragmentTransaction.commit();

And then you can get it by searching tag:

    List fragments = getSupportFragmentManager().getFragments();

    Fragment discoverFrag = null;
    Fragment myFeedFragment = null;
    Fragment filterFragment = null;

    for (int i = 0; i < fragments.size(); i++) {
        if (((Fragment) fragments.get(i)).getTag() == "discover")
            discoverFrag = (Fragment) fragments.get(i);

        if (((Fragment) fragments.get(i)).getTag() == "myfeed")
            myFeedFragment = (Fragment) fragments.get(i);

        if (((Fragment) fragments.get(i)).getTag() == "filter")
            filterFragment = (Fragment) fragments.get(i);
    }

Solution 2:

Use this this class as your adapter

classSwipeAdapterextendsFragmentPagerAdapter {
        private Map<Integer, String> mFragmentTags;
        private FragmentManager mFragmentManager;

        private String mPagetile[];

        publicSwipeAdapter(FragmentManager fm, Context context) {
            super(fm);
            mPagetile = context.getResources().getStringArray(R.array.pageTitle);
            mFragmentManager = fm;
            mFragmentTags = newHashMap<>();
        }

        @Overridepublic Fragment getItem(int position) {
            switch (position) {
                case0:
                    returnnew"Your_fragment";
                default:
                    break;
            }
            returnnull;
        }

        @Overridepublic Object instantiateItem(ViewGroup container, int position) {
            Objectobj=super.instantiateItem(container, position);
            if (obj instanceof Fragment) {
                Fragmentf= (Fragment) obj;
                Stringtag= f.getTag();
                mFragmentTags.put(position, tag);
            }
            return obj;
        }

        public Fragment getFragment(int position) {
            Stringtag= mFragmentTags.get(position);
            if (tag == null)
                returnnull;
            return mFragmentManager.findFragmentByTag(tag);
        }

        @Overridepublic CharSequence getPageTitle(int position) {
            return mPagetile[position];
        }

        @OverridepublicintgetCount() {
            return"Number of fragments";
        }
    }

Now with the instance of SwipeAdapter call getFrament(int "position of fragment"); Hope you get it.

Solution 3:

To retrieve a fragment used in your FragmentPagerAdapter, you can do this anywhere (Kotlin) :

for (fragment in supportFragmentManager.fragments) {
    if (fragment is YourFragment) {
        val yourFragment = fragment as YourFragment
    }
}

Post a Comment for "How To Add Fragment Tag In A Fragmentpageradapter To Reference The Fragment Later?"